pyserial: 没有名为tools的模块。

36

我已经在我的Ubuntu电脑上安装了最新的pySerial,使用的是python 2.7.2版本,它对大多数功能都可以正常工作,但是每当我尝试导入“tools”包时,它会提示找不到“tools”。pySerial的文档明确引用了这个“tools”包。

>>> 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的“工具”包?

11个回答

35

使用 pip 安装 pyserial。首先安装 pip:

sudo apt-get install python-pip

接下来安装 pyserial

sudo pip install pyserial

7
据推测,您的意思是让我执行sudo pip install pyserial --upgrade命令来升级pyserial。 - charmoniumQ
太棒了,谢谢!在看到这个答案之前,我尝试了所有的方法。 - Mr. Polywhirl
有没有办法在Windows上完成相同的事情?谢谢。 - Elias Benevedes
非常感谢!救了我的一天! - Fabian Knapp
在OS X上,您可以使用“sudo easy_install pip”来安装pip。来源:https://dev59.com/SWQm5IYBdhLWcg3w4CIN - ThomasW
1
为什么pip install pyserial会安装tools子模块,而apt-get install python-serial却不会呢? - Bill

10

您需要卸载 serialpyserial,然后重新安装 pyserial

pip uninstall serial
pip uninstall pyserial

pip install pyserial

由于这两个库都包含名为 serial.py 的文件,因此会出现名称冲突。

7

我来到这里是因为我有同样的问题。 奇怪的是

import serial

工作了,但是

from serial.tools import list_ports

事实证明,我很傻地把脚本命名为“serial.py”。 重命名之后,一切正常。


2
在我的情况下,我在遇到以下错误后安装了serial而不是pyserial
ImportError: No module named 'serial'

然后 import serial 没问题,但是 from serial import tools 不能工作。

只需执行 sudo pip uninstall serialsudo pip install pyserial

希望能帮助像我一样的人。


1

你能详细说明一下如何卸载Ubuntu仓库版本,并安装上游的SourceForge版本吗? - charmoniumQ

1
在site-packages文件夹中,pyserial-2.4-py2.7.egg被导入,而不是从site-packages文件夹中的serial导入。一旦我将此文件重命名,以便不再从此导入,它就可以正常工作。您可以通过执行简单的调试来轻松解决此问题。
import serial
serial._ _path_ _

查看从哪里导入了串行数据。


0

如果执行 "pip install --upgrade" 没有起作用(就像我遇到的情况一样),在Linux中,您可以检查是否在 /usr/lib/python2.7/dist-packages 中安装了串行包。新的串行包是 pip 安装到 /usr/**local**/lib/python2.7/dist-packages/serial 的那个,由于某种原因,在 usr/lib/python2.7/ 中的那个具有优先权,并且该版本的 pyserial 中不存在模块工具。更改名称或删除目录即可解决问题。


0

是的,使用python-pip安装,然后升级serial版本到2.7...它可以工作


0

pip和python -m pip之间的区别可能在于版本。例如,您可能从python2调用pip,但当您键入python -m pip时,您会得到python3等等...


-1

你必须以这种方式调用模块的函数:

from serials import tools

例如:如果我想要调用`math`模块中的`sqrt`函数,我会这样做:
from math import sqrt

import math.sqrt **is wrong.**

工具不是函数,而是一个包,可以像Sam正在尝试的那样导入。该包仅包含模块和一个空的__init__.py,因此他将不得不导入更多内容才能使用任何功能,但只要Ubuntu软件包与上游匹配(实际并不匹配,详见我的回答),它应该可以成功运行,而不会引发异常。 - SingleNegationElimination
使用pip安装pyserial。首先安装Python pip:sudo apt-get install python-pip,然后安装pyserial:sudo pip pyserial。 - user1881957

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接