Python AttributeError:“模块”对象没有属性“序列”[重复]
Posted
技术标签:
【中文标题】Python AttributeError:“模块”对象没有属性“序列”[重复]【英文标题】:Python AttributeError: 'module' object has no attribute 'Serial' [duplicate] 【发布时间】:2012-07-09 09:01:01 【问题描述】:我正在尝试在运行 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,重写我的代码,仔细检查串口等。
【问题讨论】:
你试过from serial import serial
吗?
您是否卸载了模块或更改了 python 版本?
以下哪一行在交互式 Python 解释器中不起作用?
请修改什么是正确的解决方案。您标记的那一项可能是意外工作,但既不是解决方案,也不是您想做的事情。
将您的脚本重命名为其他名称!
【参考方案1】:
我正在为与我犯相同错误的人添加此解决方案。
在大多数情况下:重命名您的项目文件'serial.py'并删除serial.pyc(如果存在),然后您可以执行简单的'import serial'而不会出现属性错误。
当您的 python 文件名为“something.py”时,当您导入“something”时会出现问题。
【讨论】:
是的..我将我的测试文件命名为“serial.py”,所以导入序列正在导入自身.. GAE 用户的附加点 - 尝试刷新内存缓存。在将模型移动到不同的文件后,不知何故遇到了这个问题并被难住了很长时间。不确定是什么导致了它的缓存,但它刷新修复了它。 哇,我永远不会想出这个解决方案,非常感谢。只是坐在这里盯着看,确实,我有一个正在导入自身的工件 .pyc 文件。 真的很好!这个答案对我帮助很大,谢谢! 这个答案应该是#1,我也有同样的问题。另一个出现的错误是AttributeError: 'module' object has no attribute 'SerialException
【参考方案2】:
我不小心安装了 'serial' (sudo python -m pip install serial
) 而不是 'pySerial' (sudo python -m pip install pyserial
),导致同样的错误。
如果前面提到的解决方案对您不起作用,请仔细检查您是否安装了正确的库。
【讨论】:
修复方法是卸载两者,然后重新安装 pyserial。 谢谢,用pip uninstall serial
卸载序列号解决了我的问题。然后安装pyserialpip install pyserial
希望更多人看到这个,也是我的错误。感谢您的帮助!
只是添加这个对我的树莓派零也有效。 Linux raspberrypi 4.14.62+ #1134 Tue Aug 14 16:58:07 BST 2018 armv6l GNU/Linux
我添加这个是因为我相信 pyserial 是一个较旧的模块。
另外,pip install --upgrade --force-reinstall pyserial
在删除 serial
(或 pip3 ...
)后可能会有所帮助。【参考方案3】:
您正在导入模块,而不是类。所以,你必须写:
from serial import Serial
您需要正确安装serial
模块:pip install pyserial
。
【讨论】:
我在导入模块时多次遇到同样的问题。我不明白为什么它在某些情况下确实有效(例如,当您查看 serial website 中的一些示例时) 我试过了。不行。错误将是“ImportError: cannot import name serial” 这看起来完全错误,抱歉。一开始这个类是Serial
而不是serial
,那么你就不用导入一个类来使用它了。 module.class()
应该工作得很好。最后但并非最不重要的一点是,对于这里发生的事情根本没有真正的解释。
这并不能解决问题。
对我来说,我跑过pip install serial
。糟糕,库错误,要安装 pyserial
。【参考方案4】:
您安装了名为“serial”的错误包。
为 python 2.x 运行pip uninstall serial
或 pip3 uninstall serial
对于 python 3.x
然后安装 pyserial 如果尚未安装
为 python 2.x 运行 pip install pyserial
或为 python 3.x 运行pip3 install pyserial
。
【讨论】:
这解决了我的问题。不错!【参考方案5】:这个问题是因为你的项目被命名为serial.py,并且导入的库也被命名为serial,改变名字就可以了。
【讨论】:
这正是我的问题所在。从未选择与导入库相同的名称。【参考方案6】:如果你和我一样无能为力,试试这个:
使用此处描述的方法列出“Serial”(或您遇到问题的任何包)的所有子模块:List all the modules that are part of a python package
就我而言,问题一个接一个地解决了。
...在我看来像一个错误...
【讨论】:
【参考方案7】:如果您有循环依赖项,也会发生此错误。检查您的导入并确保您没有任何循环。
【讨论】:
【参考方案8】:是的,这个话题有点老了,但我想为那些可能需要它的人分享对我有用的解决方案
正如阿里所说,尝试从终端使用以下命令定位您的程序:
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 的 Serial
其他解决方案:删除其他python版本
曹
来源: https://raspberrypi.stackexchange.com/questions/74742/python-serial-serial-module-not-found-error/85930#85930
努力
【讨论】:
以上是关于Python AttributeError:“模块”对象没有属性“序列”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python 错误:AttributeError:“模块”对象没有属性“heappush”
Python 3.6 AttributeError:模块“statsmodels”没有属性“compat”
无法导入freegames python包:AttributeError:模块'collections'没有属性'Sequence'
Python:AttributeError 模块 x 没有属性 y
python manage.py runserver:AttributeError:“模块”对象没有属性“选择”
AttributeError:模块“tensorflow.python.keras.backend”没有属性“get_graph”