2013-01-01 20 views
16

Ho installato l'ultimo pySerial sulla mia Ubuntu box con python 2.7.2, e funziona bene per la maggior parte delle cose, ma ogni volta che provo ad importare il pacchetto 'tools', dice che può 'trovare' strumenti '. Lo documentation for pySerial fa riferimento esplicitamente a questo pacchetto "strumenti".pyserial: Nessun modulo denominato strumenti

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

e quando io:

>>> serial.VERSION 
'2.5' 

che è la versione più recente secondo Source Forge

Allora, perché non posso ottenere al pacchetto 'strumenti' di pySerial?

+0

Beh, questo è imbarazzante! dir() non elenca i pacchetti secondari, quindi anche se fosse lì, l'unico modo per dire sarebbe solo provare a importarlo. La buona notizia è che la domanda è ancora valida perché genera davvero un errore quando provo ad importarlo. Gli strumenti – charmoniumQ

risposta

19

Utilizzare pip per installare pyserial. Per prima cosa installare pip:

sudo apt-get install python-pip 

Dopo che installano pyserial:

sudo pip install pyserial 
+7

Probabilmente intendevi per me 'sudo installare pip pyserial --upgrade' – charmoniumQ

+0

Impressionante, grazie! Ho provato tutto prima di vedere questa risposta. –

+0

C'è un modo per fare questa stessa cosa ma con Windows? Grazie. –

-1

Bisogna chiamare le funzioni del modulo in questo modo:

from serials import tools 

Per esempio: se voglio chiamare sqrt funzione dal modulo math, vorrei fare:

from math import sqrt 

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

non sono una funzione, è un pacchetto e possono essere importati come prova Sam. Il pacchetto contiene solo moduli e un '__init __. Py' vuoto, quindi dovrà importare di più per usare qualsiasi cosa, ma dovrebbe sempre meno successo senza generare un'eccezione, fintanto che il pacchetto ubuntu corrisponde a monte (che non funziona, vedi la mia risposta) – SingleNegationElimination

+0

Usa pip per installare pyserial. Per prima cosa installa python pip: sudo apt-get installa python-pip e poi installa pyserial: sudo pip pyserial – user1881957

1

Assomiglia il pacchetto ubuntu non corrisponde esattamente a monte. confrontare il pacchetto ufficiale pySerial sul loro SVN:

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

al pacchetto ubuntu in launchpad:

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

Strumenti manca anche lì. Sembra che mantengano lo script miniterm.py e lo installino ... da qualche parte; Non sono abbastanza esperto nel packaging di deb per capire dove, però.

+0

Puoi dare un po 'più di dettaglio su come andrei a disinstallare la versione di Ubuntu Repo e, al suo posto, installare il sourceforge upstream versione? – charmoniumQ

1

sono arrivato qui perché ho avuto lo stesso problema. La cosa strana era che

import serial 

lavorato, ma

from serial.tools import list_ports 

non ha fatto.

Risulta stupido chiamare lo script "serial.py". Dopo averlo rinominato, tutto ha funzionato.

0

sì, uso python-pip install ,,, poi ,,, aggiornandoli ,,, la versione di serie sarà 2,7 ... è workes

0

Solo nel caso che facendo "PIP installare --upgrade" non funziona (come è successo a me), in Linux è possibile verificare se si dispone di un pacchetto seriale in /usr/lib/python2.7/dist-packages, il nuovo serial packaged quello che installa pip va a /usr/**local**/lib/python2.7/dist-packages/serial, per qualche motivo quello in usr/lib/python2.7/ ha la precedenza e il modulo gli strumenti non esistono in quella versione di pyserial. La modifica dei nomi o l'eliminazione della directory risolvono il problema.

1

Il file pyserial-2.4-py2.7.egg nella cartella dei pacchetti del sito è stato importato anziché dalla seriale nella cartella dei pacchetti del sito. Una volta che ho rinominato questo file in modo che non venga più importato da questo, ha funzionato correttamente. Puoi eseguire facilmente il debug facendo

import serial 
serial._ _path_ _ 

per vedere da dove viene importato il seriale.

Problemi correlati