خطایی مانند module 'socks' has no attribute 'create_connection' پیش از موفقیت یک درخواست پروکسی رخ می‌دهد. از ماژول پایتونی که برنامه وارد کرده است شروع کنید.

import sys
import socks

print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))

این خطوط بررسی، مفسر و فایل واردشده را مشخص می‌کنند. آن‌ها را در همان محیط برنامه‌ای که خطا می‌دهد بخوانید. ترمینالی با محیط مجازی متفاوت می‌تواند فایل دیگری با همان نام وارد کند.

بررسی کنید آیا فایل یا بستهٔ محلی socks.py وابستگی مورد نظر را پنهان می‌کند. مسیر جست‌وجوی ماژول پایتون می‌تواند باعث شود آن فایل بر بستهٔ نصب‌شده پیشی بگیرد. برخورد تصادفی را آگاهانه تغییر نام دهید و فرآیندی را که از پیش آن را وارد کرده است دوباره راه‌اندازی کنید.

کد منبع PySocks هم set_default_proxy و هم املای سازگار setdefaultproxy را دارد، همراه با create_connection. بنابراین تغییر کورکورانهٔ یک املا تشخیص کامل یک ویژگی گم‌شده نیست.

پس از اینکه ماژول واردشده و نسخه درست بودند، کد را با API مستند آن پروژه مقایسه کنید. از افزودن دستی پوشه‌های نامرتبط کتابخانهٔ سیستم به مسیر جست‌وجوی پایتون تا زمانی که ورود به نظر کارآمد برسد بپرهیزید. این کار می‌تواند نسخه‌های وابستگی را مخلوط کند و ناسازگاری زیرین محیط را حل‌نشده باقی بگذارد.

مقالات مرتبط