Python importoval iný modul socks, než ste čakali
Preskúmajte importovaný modul, kým chýbajúce atribúty SOCKS označíte za zlyhanie proxy alebo DNS.
Chyba ako module 'socks' has no attribute 'create_connection' nastáva pred úspešnou požiadavkou cez proxy. Začnite modulom Python, ktorý aplikácia importovala.
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))Tieto kontrolné riadky určujú interpret a importovaný súbor. Čítajte ich v tom istom prostredí aplikácie, kde zlyháva. Terminál s iným virtuálnym prostredím môže importovať iný súbor s rovnakým názvom.
Skontrolujte, či lokálny súbor alebo balík socks.py nezatláča zamýšľanú závislosť. Cesta hľadania modulov v Pythone môže spôsobiť, že tento súbor zvíťazí nad nainštalovaným balíkom. Náhodnú kolíziu vedome premenujte a reštartujte proces, ktorý ho už importoval.
Zdrojový kód PySocks obsahuje aj set_default_proxy, aj kompatibilný zápis setdefaultproxy, spolu s create_connection. Slepá zmena jedného zápisu teda nie je úplnou diagnózou chýbajúceho atribútu.
Keď sú importovaný modul a verzia správne, porovnajte kód s dokumentovaným API daného projektu. Vyhnite sa ručnému pridávaniu nesúvisiacich adresárov systémových knižníc do vyhľadávacej cesty Pythonu, kým sa import nezdá funkčný. Môže to zmiešať verzie závislostí a ponechať základnú nekonzistenciu prostredia nevyriešenú.