You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode运行Python socket代码报循环导入属性错误如何解决

报错原因

从错误回溯栈可以定位到核心问题:你运行代码的桌面目录下存在一个自定义命名为socket.py的文件。Python导入模块时会优先检索当前工作目录下的文件,因此代码执行import socket时,没有加载Python官方标准库的socket模块,反而加载了你自己写的这个同名socket.py文件。
你自定义的socket.py文件第3行写了from xmlrpc.client import Server,而xmlrpc.client模块依赖标准库http.client,http.client初始化时需要调用标准库socket的_GLOBAL_DEFAULT_TIMEOUT属性,但此时被加载的socket是你自己写的、还没完成初始化的同名文件,不存在这个属性,最终触发了循环导入类的AttributeError,这个报错和VSCode编辑器本身没有关系。
另外你写的测试代码本身还存在一处语法错误:socket.gethostname是函数对象,你没有加括号执行调用,就算解决了文件名冲突也会触发后续报错。

修复步骤
  • 找到桌面路径下你自己创建的socket.py文件,将其重命名为和Python标准库不冲突的名称,比如socket_test.py即可。注意平时写Python代码时,禁止用标准库已有的模块名给自己的代码文件命名,常见的雷区包括socket.py、requests.py、threading.py、os.py等。
  • 删除同目录下自动生成的__pycache__文件夹,清除旧的模块导入缓存,避免缓存残留导致报错复现。
  • 修正测试代码中的函数调用错误,给gethostname加上执行括号,修正后的完整可运行代码如下:
import socket
import threading

PORT = 5050
SERVER = socket.gethostbyname(socket.gethostname())
print(SERVER)

重新运行代码即可正常输出本机IP地址。

内容的提问来源于stack exchange,提问作者Zyther Crez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 08:33:11