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】:

你必须卸载serialpyserial然后重新安装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 serialsudo 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”的模块

pySerial 串口工具简介

python中pyserial模块使用方法

Python AttributeError:“模块”对象没有属性“序列”[重复]

python的pyserial模块

ModuleNotFoundError:即使我安装了功能工具,也没有名为“功能工具”的模块