pyserial:没有名为工具的模块
Posted
技术标签:
【中文标题】pyserial:没有名为工具的模块【英文标题】:pyserial: No module named tools 【发布时间】:2012-12-16 00:23:11 【问题描述】:我已经用 python 2.7.2 在我的 Ubuntu 机器上安装了最新的 pySerial,它在大多数情况下都可以正常工作,但是每当我尝试导入“工具”包时,它就会说找不到“工具” . documentation for pySerial 明确引用了这个“工具”包。
>>> from serial import tools
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
import serial.tools
ImportError: No module named tools
当我:
>>> serial.VERSION
'2.5'
这是Source Forge最新的版本
那么为什么我无法访问 pySerial 的“工具”包?
【问题讨论】:
【参考方案1】:你必须卸载serial
和pyserial
然后重新安装pyserial
:
pip uninstall serial
pip uninstall pyserial
pip install pyserial
因为这两个库都包含一个名为 serial.py
的文件,所以会出现名称冲突。
【讨论】:
【参考方案2】:pip 和 python -m pip 的区别可以是版本。例如,可能是你从 python2 调用 pip,但是当你输入 python -m pip 然后你得到 python3 等等......
【讨论】:
【参考方案3】:我来到这里是因为我遇到了同样的问题。 奇怪的是
import serial
工作,但是
from serial.tools import list_ports
没有。
原来我很愚蠢将脚本命名为“serial.py”。重命名后一切正常。
【讨论】:
【参考方案4】:在我的情况下,我在收到以下错误后安装了serial
,但没有安装pyserial
。
ImportError: No module named 'serial'
然后import serial
可以,但是from serial import tools
不行。
只需sudo pip uninstall serial
和sudo pip install pyserial
希望能帮助像我这样的人。
【讨论】:
【参考方案5】:来自pyserial网页:https://pyserial.readthedocs.io/en/latest/pyserial.html
他们建议您使用以下命令: python -m pip install pyserial
这对我有用。我对 pip 了解不多,无法理解与普通 pip install pyserial 的区别,但它对我有用(经过很多挫折)。
【讨论】:
【参考方案6】:site-packages 文件夹中的 pyserial-2.4-py2.7.egg 被导入,而不是从 site-packages 文件夹中的 serial 导入。一旦我重命名了这个文件,使它不再从这个文件中导入,它就可以正常工作了。您可以通过执行此操作轻松调试
import serial
serial._ _path_ _
查看从哪里导入序列号。
【讨论】:
【参考方案7】:以防万一“pip install --upgrade”不起作用(就像我发生的那样),在 Linux 中,您可以检查/usr/lib/python2.7/dist-packages
中是否有串行包,新的串行打包了 pip安装转到/usr/**local**/lib/python2.7/dist-packages/serial
,由于某种原因,usr/lib/python2.7/
中的那个具有优先级,并且该版本的 pyserial 中不存在模块工具。更改名称或删除目录即可解决问题。
【讨论】:
【参考方案8】:是的,使用python-pip install ,,,then ,,,upgrade,,,serial 的版本会是2.7 ...它可以工作
【讨论】:
【参考方案9】:使用pip
安装pyserial
。先安装pip:
sudo apt-get install python-pip
之后安装pyserial
:
sudo pip install pyserial
【讨论】:
大概你的意思是sudo pip install pyserial --upgrade
太棒了,谢谢!在看到这个答案之前,我什么都试过了。
除了windows还有什么方法可以做同样的事情吗?谢谢。
非常感谢!拯救了我的一天!
为什么 pip install pyserial 安装工具子模块而 apt-get install python-serial 没有的解释是什么?【参考方案10】:
看起来 ubuntu 包与上游不太匹配。在他们的 SVN 上比较官方的 pySerial 包:
http://pyserial.svn.sourceforge.net/viewvc/pyserial/trunk/pyserial/serial/
到启动板中的 ubuntu 包:
http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/raring/pyserial/raring/files/head:/serial/
那里也缺少工具。看起来他们确实保留了miniterm.py
脚本,并将其安装在……某处;不过,我对 deb 打包不够精通,无法理解在哪里。
【讨论】:
您能否详细说明我将如何卸载 ubuntu repo 版本并安装上游 sourceforge 版本?【参考方案11】:你必须这样调用模块的函数:
from serials import tools
例如:如果我想从math
模块调用sqrt
函数,我会这样做:
from math import sqrt
import math.sqrt **is wrong.**
【讨论】:
tools 不是一个函数,它是一个包,可以按照 Sam 的尝试导入。包只包含模块和一个空的__init__.py
,所以他必须导入更多才能使用任何东西,但它应该永远不会成功而不引发异常,只要 ubuntu 包匹配上游(它不匹配,请参阅我的答案)
使用pip安装pyserial。首先安装python pip:sudo apt-get install python-pip 然后安装pyserial:sudo pip pyserial以上是关于pyserial:没有名为工具的模块的主要内容,如果未能解决你的问题,请参考以下文章
ModuleNotFoundError:在 pip install pyserial 之后没有名为“serial”的模块