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ą.

Powiązane artykuły