2017-07-13 12 views
0

Ich habe eine Python-Datei, die ich mit Twistd ausführen möchte. Innerhalb der Datei habe ich:So importieren Sie benutzerdefinierte Modul mit Twisted

from parser import Parser 

Ich habe auch eine parser.py Datei mit einer Parser innerhalb der Klasse.

Alles funktioniert gut, wenn ich das Skript aufrufen:

python myscript.py 

Aber dann nenne ich es mit:

from parser import Parser 
exceptions.ImportError: cannot import name Parser 

Was bin:

twistd -y myscript.py 

es mir diesen Fehler gibt Ich vermisse?

Antwort

1

Quelldateien für den Import als Module müssen im Python-Importpfad gefunden werden können. python fügt das Verzeichnis mit dem Skriptpfad zum Importpfad hinzu. Da Sie parser.py im selben Verzeichnis wie myscript.py haben, macht dies parser importierbar. twistd (beginnend mit einer Version in 2016, glaube ich) tut nicht dies tun (Hinzufügen des Pfades wurde als ein Sicherheitsproblem ähnlich dem mit . in der PATH Umgebungsvariable erstellt wurde).

Sie haben ein paar Optionen.

Beste Option: Erstellen Sie eine setup.py für Ihr Projekt. Erstelle ein virtualenv. Installieren Sie Ihr Projekt mit pip install -e ....

Mittelmäßige Option: Fügen Sie das Verzeichnis, das Ihre Quelldateien enthält, der Umgebungsvariablen PYTHONPATH hinzu.

Verwandte Themen