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 serialpip3 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”