Python AttributeError:'module'对象没有属性'Serial'[重复]
- 2025-03-18 08:56:00
- admin 原创
- 48
问题描述:
我正在尝试使用 Python 2.6 访问运行 Debian 的 Raspberry Pi 上的串行端口。我的脚本名为serial.py
尝试导入 pySerial:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
由于某种原因,它拒绝建立串行连接并出现以下错误:
AttributeError: 'module' object has no attribute 'Serial'
当我尝试在交互式 Python 解释器中输入相同的代码时,它仍然不起作用。
奇怪的是,几个小时前它还可以工作。
可能是什么问题?我尝试修复这个问题一段时间,再次安装 pySerial,重写代码,仔细检查串行端口等。
解决方案 1:
我意外地安装了“serial”(sudo python -m pip install serial
)而不是“pySerial”(sudo python -m pip install pyserial
),这导致了同样的错误。
如果前面提到的解决方案对您不起作用,请仔细检查您是否安装了正确的库。
解决方案 2:
我正在为犯和我一样错误的人添加这个解决方案。
大多数情况下:重命名您的项目文件serial.py
并删除(serial.pyc
如果存在),那么您就可以简单地import serial
避免属性错误。
当您的 python 文件名为“something.py”时导入“something”就会出现问题。
解决方案 3:
你导入的是模块,而不是类。因此,你必须这样写:
from serial import Serial
您需要正确安装serial
模块:pip install pyserial
。
解决方案 4:
您安装了不正确的名为“ serial ”的包。
pip uninstall serial
针对 python 2.x 或pip3 uninstall serial
3.x运行
然后通过运行python 2.x 或python 3.x 来安装pyserial(如果尚未安装)。
pip install pyserial
`pip3 install pyserial`
解决方案 5:
如果你和我一样无助,可以试试这个:
使用此处描述的方法列出“Serial”的所有子模块(或您遇到问题的任何包): 列出属于 Python 包的所有模块
就我而言,问题一个接一个地得到了解决。
...在我看来,这看起来像是一个错误...
解决方案 6:
如果您有循环依赖,也可能会发生此错误。请检查您的导入,并确保不存在任何循环。
解决方案 7:
是的,这个话题有点老了,但我想与那些可能需要它的人分享对我有用的解决方案
正如阿里所说,尝试使用以下命令从终端找到您的程序:
sudo python3
import serial
print(serial.__file__)
--> 复制
CTRL+D #(to get out of python)
sudo python3
-->粘贴/__init__.py
运行__init__.py
将对你的程序说“好的,我将使用来自 python3 的串行”。我的问题是我的 python3 程序使用的是来自 python 2.7 的串行
其他解决方法:删除其他python版本
曹
努力