2013-07-04 4 views
14

Ho installato python 2.7.5 che funziona correttamente.ImportError: nessun modulo denominato twisted.internet

Quindi installo il scrapy (che, penso, usa internamente storto). Anche il mio ragno sporco funziona bene.

ho installato twisted:

sudo apt-get install python-twisted

Poi, ho creato un programma di esempio utilizzando il codice Echo Server mostrato here

Ecco il codice

from twisted.internet import protocol, reactor 


class Echo(protocol.Protocol): 
    def dataReceived(self, data): 
     self.transport.write(data) 

class EchoFactory(protocol.Factory): 
    def buildProtocol(self, addr): 
     return Echo() 

reactor.listenTCP(1234, EchoFactory()) 
reactor.run() 

provo a fare funzionare questo codice utilizzando questo comando:

$ python twistedTester.py 
Traceback (most recent call last): 
    File "twistedTester.py", line 1, in <module> 
    from twisted.internet import protocol, reactor 
ImportError: No module named twisted.internet 

Qualcuno mi può aiutare con il modo in cui posso eseguire il debug perché il mio pacchetto twistato non viene prelevato dall'installazione di Python?

+0

Prova a eseguire 'which python' - cosa ti dice? Che dire di 'which python2.7'? Che ne dici di "python -c" import twistato, print (twistato) "'? Hai forse un file chiamato 'twisted.py' da qualche parte su' sys.path'? – Glyph

risposta

9

Ho capito perché questo errore stava accadendo. Per qualche ragione, usare apt-get per installare un pacchetto python non lo stava installando correttamente.

Quindi, ho dovuto scaricare una sfera tar e installare il pacchetto da loro.

Ho scaricato il catrame contorto da here.

ho fatto un tar xjf Twisted-13.1.0.tar.bz2 - questo ha creato una directory chiamata twisted-13.1.0

prossimo, cd Twisted-13.1.0 Infine, python setup.py install

questo mi ha dato un errore. Twisted richiedeva un altro pacchetto chiamato zope.interface. Quindi, ho scaricato tar ball per zope.interface da here. Quindi, ha eseguito questo comando tar xzf zope.interface-3.6.1.tar.gz che ha creato una cartella denominata zope.interface-3.6.1. Quindi, inserire cd in zope.interface-3.6.1 ed eseguire python setup.py install

Nota: in base ai diritti dell'utente, è possibile eseguire questi comandi in modalità sudo. Basta aggiungere la parola chiave sudo prima di ogni comando.

+4

'apt-get install python-twisted' generalmente funziona sempre. In caso contrario, dovresti inviare una segnalazione di bug di dettaglio al tuo team di distribuzione (sia Debian che Ubuntu, a quanto pare) in modo che possano risolvere il problema. Avrà bisogno di più dettagli di "non installarlo correttamente" però. –

+1

sudo python setup.py installa – gbk

+1

uomo che hai salvato il mio giorno:] –

0

Ho scoperto perché apt-get install python-twisted non era sufficiente o "installava correttamente", come hai detto, user1700184.

Uso Debian Wheezy e Python 2.7.

ho dovuto spostare la cartella denominata "contorto" /usr/lib/python2.7/dist-packages/-/usr/lib/python2.7/

Lo stesso deve essere fatto con il pacchetto "Zope" o comunque ad uno che si installa, ma non viene ripresa quando si tenta esegui il tuo codice

Tuttavia, perché questo è ancora più necessaria nel mio caso è ancora un mistero, dato che il mio sys.path include sia /usr/lib/python2.7/ e /usr/lib/python2.7/dist-packages, quindi, qualsiasi cosa era sotto dist-packages avrebbe dovuto essere recuperate dall'interprete.

+2

Non spostare i pacchetti in/usr'. Qualcosa nel tuo sistema è rotto; questo è un bug in Debian. Si prega di segnalare il bug. – Glyph

9

Se si utilizza pip solo provare:

pip install twisted 

Le stesse opere con w3lib e lxml.

Su alcuni sistemi * nix questo potrebbe darti un errore di autorizzazione. Se ciò accade, prova:

sudo -H pip install twisted 
+1

Questo ha funzionato anche per me, nota, su mac os X si può dire "errore 1: permesso negato" a meno che non venga usato sudo. "sudo pip install twisted" –

+0

Questo non ha funzionato per me http://pastebin.com/N7czaF5k –

0

È successo anche a me. Finalmente capisco che c'è un file chiamato twisted.py nella mia attuale directory di lavoro. Ho rimosso twisted.py e twisted.pyc. Problema risolto.

5

si prega di rinominare il file twisted.py per qualcos'altro. ogni volta che si importa una funzione da un file, l'interprete cercherà il file nella posizione corrente e quindi cercherà nella libreria. quindi se hai qualche file nel nome di "twisted.py" dovresti probabilmente rinominarlo.

dopo averlo rinominato. non riesci a rimuovere il file twisted.pyc prima di eseguirlo di nuovo.

0

Penso che valga la pena notare che se si utilizza sudo per avviare python si sta utilizzando il tuo python originale di sistema predefinito. Questo è NON il pitone a cui punta il tuo PATH. Ad esempio, se si utilizza Anaconda e il percorso è stato aggiornato in modo che i punti which python a path/to/anaconda/bin/python, sudo which python rimandino a usr/bin/python.

Quindi ovviamente sudo python twistedTester.py non trova il modulo twistato. Per ovviare a ciò dovresti passare esplicitamente il percorso dell'anaconda python. Così:

sudo path/to/anaconda/bin/python twistedTester.py