我试图在运行Debian的Raspberry Pi上使用Python 2.6访问串口。
我的名为serial.py
的脚本尝试导入pySerial:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
由于某种原因,它拒绝与此错误建立串行连接:
AttributeError: 'module' object has no attribute 'Serial'
当我尝试在交互式Python解释器中键入相同的代码时,它仍然无法正常工作。
奇怪的是,它曾经在几个小时前工作过。
可能是什么问题?我试图解决这个问题一段时间,再次安装pySerial,重写我的代码,仔细检查串口等等。
提前致谢!
答案 0 :(得分:160)
我正在为那些犯同样错误的人添加此解决方案。
在大多数情况下:重命名项目文件'serial.py'并删除serial.pyc(如果存在),然后您可以执行简单的'import serial'而不会出现属性错误。
当您的python文件名为'something.py'时导入'某事'时会出现问题。
答案 1 :(得分:102)
我不小心安装了'serial'(sudo python -m pip install serial
)而不是'pySerial'(sudo python -m pip install pyserial
),导致同样的错误。
如果前面提到的解决方案不适合您,请仔细检查您是否安装了正确的库。
答案 2 :(得分:79)
您正在导入模块,而不是类。所以,你必须写:
from serial import Serial
您需要正确安装serial
模块:pip install pyserial
。
答案 3 :(得分:14)
您已安装名为“ serial ”的错误包。
pip uninstall serial
运行pip3 uninstall serial
for python 3.x pip install pyserial
或为python 3.x运行pip3 install pyserial
。答案 4 :(得分:3)
如果你像我一样无助,试试这个:
列出" Serial"的所有子模块(或者您遇到问题的任何包裹)使用此处描述的方法:List all the modules that are part of a python package
就我而言,问题一个接一个地解决了。
......对我来说看起来像个错误......
答案 5 :(得分:2)
这个问题是你的proyect命名为serial.py,导入的库也是名称序列,更改名称等等。
答案 6 :(得分:1)
如果您有循环依赖项,也会发生此错误。检查您的进口并确保您没有任何周期。
答案 7 :(得分:1)
是的,这个话题有点老了,但是我想与那些可能仍然需要它的人分享适用于我的解决方案
如阿里所说,请尝试从终端使用以下内容查找程序:
sudo python3
import serial
print(serial.__file__)
->复制
CTRL+D #(to get out of python)
sudo python3
->粘贴 /__init__.py
激活__init__.py
将对您的程序说“好吧,我要使用python3的Serial”。我的问题是我的python3程序正在使用python 2.7中的Serial
其他解决方案:删除其他python版本
曹
Tryhard