Python toi eri socks-moduulin kuin odotit
Tarkastele tuotua moduulia ennen kuin pidät puuttuvia SOCKS-attribuutteja välityspalvelimen tai DNS:n vikana.
Virhe kuten module 'socks' has no attribute 'create_connection' ilmenee ennen onnistunutta välityspalvelinpyyntöä. Aloita Python-moduulista, jonka sovellus toi.
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))Nämä tarkistusrivit tunnistavat tulkin ja tuodun tiedoston. Lue ne samassa sovellusympäristössä, jossa vika ilmenee. Toista virtuaaliympäristöä käyttävä pääte voi tuoda toisen samannimisen tiedoston.
Tarkista, varjostaako paikallinen socks.py-tiedosto tai -paketti aiottua riippuvuutta. Pythonin moduulien hakupolku voi saada kyseisen tiedoston voittamaan asennetun paketin. Nimeä tahaton törmäys tarkoituksella uudelleen ja käynnistä uudelleen prosessi, joka on jo tuonut sen.
PySocksin lähdekoodi sisältää sekä set_default_proxy että yhteensopivan kirjoitusasun setdefaultproxy sekä create_connection. Yhden kirjoitusasun sokea muuttaminen ei siis ole puuttuvan attribuutin täydellinen diagnoosi.
Kun tuotu moduuli ja versio ovat oikein, vertaa koodia kyseisen projektin dokumentoituun rajapintaan. Vältä liittymättömien järjestelmäkirjastojen hakemistojen lisäämistä käsin Pythonin hakupolkuun, kunnes tuonti näyttää toimivan. Se voi sekoittaa riippuvuuksien versioita ja jättää taustalla olevan ympäristön epäsuhdan ratkaisematta.