如何解决Python报错“AttributeError: module 'serial' has no attribute 'Serial'”
错误原因
- 安装了错误的依赖库:误安装了名为
serial的第三方库,而非所需的pyserial库,前者没有Serial类定义,会触发该属性错误 - Python版本不匹配:
pip安装的库对应Python版本和实际运行脚本的Python版本不一致,比如用pip3安装到Python3环境,但用默认指向Python2的python命令运行脚本 - 本地文件重名冲突:脚本运行目录下存在名为
serial.py的自定义文件或serial文件夹,Python导入时会优先加载本地文件而非系统安装的pyserial库
修复步骤
- 第一步:先卸载所有冲突的库,执行命令:
# 对应Python2环境 pip uninstall -y serial pyserial # 对应Python3环境 pip3 uninstall -y serial pyserial
- 第二步:重新安装官方的
pyserial库:
# Python2环境 pip install pyserial # Python3环境 pip3 install pyserial
- 第三步:检查脚本所在目录,删除/重命名名为
serial.py的文件,同时删除同目录下的__pycache__缓存文件夹,避免导入冲突 - 第四步:验证库导入是否正常,打开对应版本的Python交互终端,执行以下命令,无报错则说明环境正常:
import serial print(serial.Serial)
- 第五步:确认运行命令和Python版本匹配,比如你用Python3安装的库,就用以下命令运行脚本:
python3 Joystick.py
后续可能遇到的问题补充
脚本正常运行后如果出现串口权限报错,可执行以下命令将当前用户加入串口权限组,重启或重新登录后生效:
sudo usermod -aG dialout $USER
内容的提问来源于stack exchange,提问作者Caleb Gross
相关产品推荐
相关产品推荐

