Python が想定と異なる socks モジュールを読み込んだ
SOCKS 属性の欠落をプロキシや DNS の障害と判断する前に、読み込まれたモジュールを確認してください。
module 'socks' has no attribute 'create_connection' のようなエラーは、プロキシ要求が成功する前に発生します。まずアプリケーションが読み込んだ Python モジュールから確認してください。
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))これらの確認行は、インタープリタと読み込まれたファイルを特定します。失敗しているのと同じアプリケーション環境で読んでください。別の仮想環境を使うターミナルでは、同じ名前の別ファイルを読み込むことがあります。
ローカルの socks.py ファイルやパッケージが目的の依存関係を覆い隠していないか確認してください。Python のモジュール検索パスにより、そのファイルがインストール済みパッケージより優先されることがあります。偶発的な衝突は意図的に名前を変更し、すでに読み込んだプロセスを再起動してください。
PySocks のソースには set_default_proxy と互換表記の setdefaultproxy の両方、さらに create_connection が含まれています。したがって一方の表記を闇雲に変えても、属性欠落の完全な診断にはなりません。
読み込まれたモジュールとバージョンが正しくなったら、コードをそのプロジェクトの文書化された API と比較してください。読み込みが機能しているように見えるまで、無関係なシステムライブラリのディレクトリを手動で Python の検索パスに追加しないでください。依存関係のバージョンが混在し、根本的な環境の不一致が未解決のまま残る可能性があります。