【问题标题】:pyserial: No module named toolspyserial:没有名为工具的模块
【发布时间】: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 的“工具”包?

【问题讨论】:

    标签: python python-2.7 serial-port 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
                    猜你喜欢
                    • 1970-01-01
                    • 2019-06-09
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-04-21
                    • 2022-11-02
                    • 1970-01-01
                    相关资源
                    最近更新 更多