Un errore come module 'socks' has no attribute 'create_connection' si verifica prima che una richiesta proxy riesca. Parti dal modulo Python importato dall’applicazione.

import sys
import socks

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

Queste righe di ispezione identificano l’interprete e il file importato. Leggile nello stesso ambiente dell’applicazione in cui si verifica l’errore. Un terminale che usa un altro ambiente virtuale può importare un altro file con lo stesso nome.

Controlla se un file o pacchetto socks.py locale oscura la dipendenza prevista. Il percorso di ricerca dei moduli di Python può far vincere quel file sul pacchetto installato. Rinomina deliberatamente la collisione accidentale e riavvia il processo che lo ha già importato.

Il codice sorgente di PySocks contiene sia set_default_proxy sia la grafia di compatibilità setdefaultproxy, insieme a create_connection. Cambiare ciecamente una sola grafia non è quindi una diagnosi completa di un attributo mancante.

Una volta che il modulo importato e la versione sono corretti, confronta il codice con l’API documentata di quel progetto. Evita di aggiungere manualmente directory di librerie di sistema non correlate al percorso di ricerca di Python finché l’importazione non sembra funzionare. Ciò può mescolare versioni delle dipendenze e lasciare irrisolto il disallineamento di fondo dell’ambiente.

Articoli correlati