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

Arch Linux下Python报错:module 'socket' has no attribute 'AF_UNIX'

问题:Arch Linux 下 Python socket 模块提示 AttributeError: 无 AF_UNIX/AF_INET 属性

环境与代码

运行环境:Arch Linux
执行的Python代码:

import socket
import sys


if __name__ == "__main__":
    print(sys.platform)
    server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)

报错信息

AttributeError: module 'socket' has no attribute 'AF_UNIX'

已尝试的无效操作

  • 排除Windows平台问题:sys.platform输出为linux,排除Windows环境导致的常量缺失
  • 降级Python版本:从3.12降级至3.9(该版本在Mac上可正常运行代码),问题依旧
  • 替换网络协议常量:改用socket.AF_INET仍触发相同错误
  • 直接执行单行测试命令:python -c "import socket; socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)",报错一致
  • 更换Python环境:系统自带Python、conda创建的环境、venv虚拟环境均出现该问题
  • 交互式shell测试:在Python交互式shell中运行相同代码无异常

解决方案

1. 排查当前目录下的同名文件

如果代码所在目录存在自定义的socket.py,会覆盖标准库的socket模块,导致无法读取标准常量。执行以下命令检查:

ls -la | grep socket.py

若存在该文件,立即重命名或删除,同时删除同目录下的socket.pyc文件或__pycache__文件夹。

2. 检查PYTHONPATH环境变量

若PYTHONPATH被篡改,包含了优先级高于标准库的路径,会导致导入异常。执行命令查看当前PYTHONPATH:

echo $PYTHONPATH

若输出有非预期路径,临时清空后测试:

unset PYTHONPATH
python your_script.py

若问题解决,需调整PYTHONPATH配置,避免干扰标准库导入。

3. 修复损坏的Python安装

Arch Linux的Python包可能因更新或异常操作损坏,尝试重新安装对应版本:

  • 系统Python:
sudo pacman -S --reinstall python
  • conda环境:
conda install --force-reinstall python=3.9
  • venv虚拟环境:删除后重新创建
rm -rf your_venv_dir
python -m venv your_venv_dir
source your_venv_dir/bin/activate
pip install --upgrade pip

4. 检查代码中的变量重命名冲突

确认代码中未对socket模块或变量进行重命名,比如以下错误写法:

import socket as sock
# 或
socket = "自定义字符串"

此类操作会覆盖模块引用,导致无法访问模块内的常量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:06:01