像 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 的搜索路径。那样可能混用依赖版本,并让底层的环境不一致问题得不到解决。

相关文章