Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have installed the latest pySerial on my Ubuntu box with python 2.7.2, and it works fine for most things, but whenever I try to import the 'tools' package, it says that it can't find 'tools'. The documentation for pySerial explicitly references this 'tools' package.

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

and when I:

>>> serial.VERSION
'2.5'

which is the latest version according to Source Forge

So why can't I get to the 'tools' package of pySerial?

On OS X, you can use sudo easy_install pip to install pip. From here: stackoverflow.com/questions/17271319/installing-pip-on-mac-os-x – ThomasW Feb 23, 2014 at 9:11 What is the explanation for why pip install pyserial installs the tools sub-module and apt-get install python-serial doesn't? – Bill Feb 6, 2018 at 4:40

You have to uninstall serial and pyserial then reinstall pyserial:

pip uninstall serial
pip uninstall pyserial
pip install pyserial

Because the both libs contain a file named serial.py, you get a name conflict.

It looks like the ubuntu package does not quite match up with upstream. compare the official pySerial package on their SVN:

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

to the ubuntu package in launchpad:

http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/raring/pyserial/raring/files/head:/serial/

Tools is missing there, too. It does look like they keep the miniterm.py script, and install it... somewhere; I'm not versed enough in deb packaging to understand where, though.

Can you give a little more detail on how I would go about uninstalling the ubuntu repo version and, in its place, installing the upstream sourceforge version? – charmoniumQ Jan 1, 2013 at 7:16

The pyserial-2.4-py2.7.egg in the site-packages folder was getting imported instead of from serial in the site-packages folder. Once I renamed this file so that it no longer imported from this it worked fine. You can easily debug this by doing

import serial
serial._ _path_ _

to see where serial is getting imported from.

In my case, I installed serial but not pyserial after getting the following error.

ImportError: No module named 'serial'

Then import serial was ok, but from serial import tools can't work.

Just sudo pip uninstall serial and sudo pip install pyserial

Hope to help people like me.

Just in case that doing "pip install --upgrade" doesn't work(as happened to me), in Linux you can check if you have a serial package in /usr/lib/python2.7/dist-packages, the new serial packaged the one that pip install goes to /usr/**local**/lib/python2.7/dist-packages/serial, for some reason the one in usr/lib/python2.7/ has precedence and the module tools doesn't exist in that version of pyserial. Changing names or deleting the directory solve the problem.

For example: If I want to call sqrt function from math module, I would do:

from math import sqrt
import math.sqrt **is wrong.**
                tools is not a function, it's a package, and can be imported as Sam is trying..  the package contains only modules and an empty __init__.py, so he'll have to import more to use anything, but it should never-the-less succeed without raising an exception, so long as the ubuntu package matches upstream (which it doesn't, see my answer)
– SingleNegationElimination
                Jan 1, 2013 at 7:07
                Use pip to install pyserial. First install python pip: sudo apt-get install python-pip and then install pyserial: sudo pip pyserial
– user1881957
                Jan 1, 2013 at 8:33

From the pyserial webpage: https://pyserial.readthedocs.io/en/latest/pyserial.html

They recommend that you use the command: python -m pip install pyserial

That worked for me. I don't know enough about pip to undersand the difference from just a regular pip install pyserial, but it worked for me (after much frustration).

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.