关于python:pyserial:没有名为tools的模块

pyserial: No module named tools

我已经用python 2.7.2在我的Ubuntu设备上安装了最新的pyserial,它在大多数情况下都可以正常工作,但是每当我试图导入"工具"包时,它都说它找不到"工具"。pyserial的文档明确引用了这个"工具"包。

1
2
3
4
5
>>> from serial import tools
Traceback (most recent call last):
  File"<pyshell#30>", line 1, in <module>
    import serial.tools
ImportError: No module named tools

当我:

1
2
>>> serial.VERSION
'2.5'

根据source forge,哪个是最新版本

为什么我不能去Pyserial的"工具"包?

  • 好吧,这太尴尬了!dir()没有列出子包,所以即使它在那里,唯一的方法就是尝试导入它。好消息是这个问题仍然有效,因为当我尝试导入它时,它确实会抛出一个错误。


pip安装pyserial。第一次安装PIP:

1
sudo apt-get install python-pip

安装完成后,安装pyserial

1
sudo pip install pyserial

  • 大概你是想让我去埃多克斯
  • 太棒了,谢谢!在我看到这个答案之前,我什么都试过了。
  • 除了使用Windows,还有什么方法可以做到这一点吗?谢谢。
  • 非常感谢!救了我的一天!
  • 在OSX上,可以使用sudo easy_install pip安装pip。从这里:stackoverflow.com/questions/17271319/installing-pip-on-mac-o&zwnj;&8203;s-x
  • 为什么pip install pyserial安装工具子模块而apt get install python serial不安装,有什么解释?


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

1
import serial

工作,但

1
from serial.tools import list_ports

没有。

结果发现愚蠢的我把剧本命名为"serial.py"。重新命名后,一切正常。


site packages文件夹中的pyserial-2.4-py2.7.egg正在导入,而不是从site packages文件夹中的serial导入。一旦我重命名了这个文件,使它不再从此文件导入,它就可以正常工作了。您可以通过执行

1
2
import serial
serial._ _path_ _

查看序列号从何处导入。


看起来Ubuntu包与上游不太匹配。比较其SVN上的官方pyserial包:

http://pyserial.svn.sourceforge.net/viewvc/pyserial/trunk/pyserial/serial/

到LaunchPad中的Ubuntu包:

http://bazaar.launchpad.net/~ubuntu分支/ubuntu/raring/pyserial/raring/files/head:/serial/

工具也不见了。看起来他们保留了miniterm.py脚本,并安装了它…在某个地方,我对DEB的包装还不够精通,不知道在哪里。

  • 您能详细介绍一下我将如何卸载Ubuntu repo版本以及如何安装上游的sourceforge版本吗?


在我的例子中,我在得到以下错误后安装了serial,但没有安装pyserial

1
ImportError: No module named 'serial'

当时江户十一〔11〕还可以,但江户十二〔12〕不行。

只有sudo pip uninstall serialsudo pip install pyserial

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


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


是的,使用python pip install、、、then、、、upgrade、、、和,serial的版本将是2.7…它可以工作。


从pyserial网页:https://pyserial.readthedocs.io/en/latest/pyserial.html

他们建议您使用以下命令:python-m pip安装pyserial

这对我很有用。我对pip的了解还不足以理解它与普通的pip安装pyserial的区别,但是它对我很有效(在经历了很多挫折之后)。


您必须这样调用模块的函数:

1
from serials import tools

例如:如果我想从math模块调用sqrt函数,我会这样做:

1
2
3
from math import sqrt

import math.sqrt **is wrong.**

  • 工具不是函数,它是包,可以在Sam尝试时导入。这个包只包含模块和一个空的__init__.py,所以他需要导入更多的东西来使用任何东西,但是只要Ubuntu包与上游匹配(它不匹配,请看我的答案),它就永远不会在不引发异常的情况下成功。
  • 使用pip安装pyserial。首先安装python-pip:sudo-apt-get安装python-pip,然后安装pyserial:sudo-pip-pyserial