Python zaimportował inny moduł socks, niż oczekiwano
Sprawdź zaimportowany moduł, zanim brakujące atrybuty SOCKS uznasz za awarię proxy lub DNS.
Błąd taki jak module 'socks' has no attribute 'create_connection' pojawia się przed udanym żądaniem proxy. Zacznij od modułu Pythona, który zaimportowała aplikacja.
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))Te linie kontrolne wskazują interpreter i zaimportowany plik. Czytaj je w tym samym środowisku aplikacji, w którym występuje błąd. Terminal korzystający z innego środowiska wirtualnego może zaimportować inny plik o tej samej nazwie.
Sprawdź, czy lokalny plik lub pakiet socks.py nie przesłania zamierzonej zależności. Ścieżka wyszukiwania modułów Pythona może sprawić, że ten plik wygra z zainstalowanym pakietem. Celowo zmień nazwę przypadkowego konfliktu i uruchom ponownie proces, który już go zaimportował.
Kod źródłowy PySocks zawiera zarówno set_default_proxy, jak i zgodny zapis setdefaultproxy, a także create_connection. Zatem zmiana jednego zapisu po omacku nie jest pełną diagnozą brakującego atrybutu.
Gdy zaimportowany moduł i wersja są poprawne, porównaj kod z udokumentowanym API tego projektu. Unikaj ręcznego dodawania niepowiązanych katalogów bibliotek systemowych do ścieżki wyszukiwania Pythona, dopóki import nie zacznie wydawać się działać. Może to wymieszać wersje zależności i pozostawić podstawową niezgodność środowiska nierozwiązaną.