Python AttributeError:'module'对象没有属性'Serial'

时间:2012-07-09 22:09:25

标签: python serial-port raspberry-pi

我试图在运行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,重写我的代码,仔细检查串口等等。

提前致谢!

8 个答案:

答案 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 ”的错误包

  • 为python 2.x或pip uninstall serial运行pip3 uninstall serial for python 3.x
  • 然后安装 pyserial (如果尚未安装) 为python 2.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版本

来源: https://raspberrypi.stackexchange.com/questions/74742/python-serial-serial-module-not-found-error/85930#85930

Tryhard