2013-01-01 9 views
16

Ich habe die neueste pySerial auf meiner Ubuntu-Box mit Python 2.7.2 installiert, und es funktioniert für die meisten Dinge, aber jedes Mal, wenn ich versuche, das "tools" -Paket zu importieren, heißt es finde keine Werkzeuge. Die documentation for pySerial verweist explizit auf dieses "Tools" -Paket.pyserial: Kein Modul namens 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 

und als ich:

>>> serial.VERSION 
'2.5' 

, die die neueste Version nach Source Forge

Warum kann ich nicht auf die 'Werkzeuge' Paket von pyserial?

+0

Nun, das ist peinlich! dir() listet keine Unterpakete auf, also selbst wenn es dort wäre, wäre es die einzige Möglichkeit zu sagen, nur zu versuchen, es zu importieren. Die gute Nachricht ist, dass die Frage immer noch gültig ist, weil sie tatsächlich einen Fehler auslöst, wenn ich versuche, sie zu importieren. – charmoniumQ

Antwort

19

Verwenden Sie pip, um pyserial zu installieren. Installieren Sie zuerst pip:

sudo apt-get install python-pip 

Danach pyserial installieren:

sudo pip install pyserial 
+7

Vermutlich meintest du für mich 'sudo pip install pyserial --upgrade' – charmoniumQ

+0

Super, danke! Ich habe alles versucht, bevor ich diese Antwort gesehen habe. –

+0

Gibt es eine Möglichkeit, das Gleiche mit Windows zu tun? Vielen Dank. –

-1

Sie haben auf diese Weise die Funktionen des Moduls zu nennen:

from serials import tools 

Zum Beispiel: Wenn ich sqrt Funktion von math Modul aufgerufen werden soll, würde ich tun:

from math import sqrt 

import math.sqrt **is wrong.** 
+0

Tools ist keine Funktion, es ist ein Paket, und kann importiert werden, wie Sam versucht .. das Paket enthält nur Module und eine leere '__init __. Py', so muss er mehr importieren, um etwas zu verwenden, aber es sollte Nichtsdestotrotz gelingt es, ohne eine Ausnahme auszulösen, solange das Ubuntu-Paket mit dem Upstream übereinstimmt (was nicht der Fall ist, siehe meine Antwort) – SingleNegationElimination

+0

Verwenden Sie pip, um pyserial zu installieren. Zuerst installiere python pip: sudo apt-get installiere python-pip und installiere pyserial: sudo pip pyserial – user1881957

1

Es sieht aus wie Das Ubuntu-Paket stimmt nicht ganz mit dem Upstream überein. Vergleichen Sie die offizielle pyserial Paket auf ihrem SVN:

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

zum ubuntu Paket in Launchpad:

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

Tools ist es fehlt auch. Es sieht so aus, als ob sie das Skript miniterm.py behalten und es irgendwo installieren. Ich bin nicht genug in Deb-Verpackung, um zu verstehen, wo, obwohl.

+0

Kannst du ein wenig mehr darüber erzählen, wie ich die Ubuntu-Repo-Version deinstallieren und an ihrer Stelle die Upstream-Sourceforge installieren würde Ausführung? – charmoniumQ

1

ich hier bin, weil ich das gleiche Problem hatte. Das Merkwürdige war, dass

import serial 

gearbeitet, aber

from serial.tools import list_ports 

nicht.

Stellt sich dumm mir das Skript "serial.py" genannt. Nach der Umbenennung funktionierte alles.

0

ja, python- pip install ,,, dann ,,, Upgrade ,,, die Version von Serien 2.7 sein wird ... es

0

Nur für den Fall, dass workes "BIB installieren --upgrade" tun funktioniert nicht (wie mir passiert), in Linux können Sie überprüfen, ob Sie ein serielles Paket in /usr/lib/python2.7/dist-packages haben, die neue serielle verpackt die, die pip install geht zu , aus irgendeinem Grund hat der in usr/lib/python2.7/ Vorrang und das Modul Werkzeuge gibt es in dieser Version von pyserial nicht. Das Ändern der Namen oder das Löschen des Verzeichnisses lösen das Problem.

1

Das Verzeichnis pyserial-2.4-py2.7.egg im Ordner site-packages wurde importiert und nicht aus serial im Ordner site-packages. Nachdem ich diese Datei umbenannt habe, damit sie nicht mehr importiert wird, hat sie funktioniert. Sie können dies leicht debuggen, indem Sie

import serial 
serial._ _path_ _ 

, um zu sehen, woher seriell importiert wird.