Import python-Datei vom terminal
Ich versuche zu laufen eine python-Datei aus meinem terminal. Also, wenn ich es bekomme ich den folgenden Fehler:
Traceback (most recent call last):
File "evaluate_classifier.py", line 1, in <module>
import alarm_detection.classifier_selection.classifier_evaluation as clf_eval
ImportError: No module named alarm_detection.classifier_selection.classifier_evaluation
In meiner Datei benutze ich diesen code:
import alarm_detection.classifier_selection.classifier_evaluation as clf_eval
Wie kann ich den import der python-Datei classifier_evaluation vom terminal (es ist auch in einem anderen Verzeichnis)
Dank.
- Haben Sie versucht, um das Verzeichnis in Ihrem Pfad?
- Nein, wie kann ich dies tun?
- ist der Paket-und python-Programm, das Sie ausführen, sind im gleichen Ordner. Wenn nicht, bitte legen Sie das Paket in das gleiche Verzeichnis und starte das Programm erneut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es das Verzeichnis, das die
alarm_detection
Paket ist, nicht in Ihrem python-Pfad. Sie können nur importieren, Pakete und Module aus den Verzeichnissen, die in Ihrersys.path
. Die Standard-Verzeichnisse enthalten im Pfad das aktuelle Verzeichnis (in dem Sie das Skript ausgeführt werden kann) und die wichtigsten python-Verzeichnis, in dem alle installierten Pakete (wie numpy, os, Mathematik etc...) sind in.Können Sie (vorübergehend) ändern Sie den python-Pfad. Wenn Ihr Paket
alarm_detection
enthalten ist, in das Verzeichnis/full/path/dir/
Sie können dann importieren Sie Sie von es wie so:Müssen Sie dies tun, jedes mal, wenn es jedoch nicht bleiben Hinzugefügt, wenn Sie Sie schließen, dass die Sitzung in der python.
Oder Sie können einfach verschieben Sie das Paket in das gleiche Verzeichnis Sie verwenden es in. Ich gehe davon aus, dass in all diesem, dass
alarm_detection
ist ein Paket, das Sie erstellt haben, und nicht heruntergeladen pip oder anaconda oder so etwas.ist der Paket-und python-Programm, das Sie ausführen, sind im gleichen Ordner. Wenn nicht, bitte legen Sie das Paket in das gleiche Verzeichnis und starte das Programm erneut. Ein weiterer Weg, um Ihr Paket Speicherort Pfad der Systemvariablen. wenn Sie Sie nicht benutzen regelmäßig, Sie können einfach verschieben Paket auf Ihren aktuellen Ordner, in dem python-Programm vorhanden ist.
Haben Sie mehrere Möglichkeiten. Sie alle haben die gleichen grundlegenden Effekt: Sie wollen sagen, Python, wo man das Modul dein script braucht zu importieren.
Option 1. Ändern Sie die Python-sys.Pfad in Ihrem Skript.
(Limok darauf hingewiesen, zu.) Wenn Sie wissen, der absolute Pfad zu dem Python-Modul, oder Sie können es berechnen aus einen relativen Pfad angeben, dann können Sie diesen Pfad im code , bevor das Skript versucht, das Modul importieren.
Durch das hantieren mit
sys.path
können Sie erreichen, dass einige ziemlich erstaunlich (und verwirrend) Effekte. Aber seien Sie vorsichtig, denn es kann verwirrend sein, für andere Menschen, die versuchen zu Lesen und zu verwalten Sie Ihren code später. ("Wo ist denn das Modul her??")Option 2. Ändern Sie die PYTHONPATH-Umgebungsvariable.
In der bash shell, das ist so einfach wie
Dieser hat die gleiche Wirkung auf
sys.path
, aber es macht nicht das script verantwortlich für die Konfiguration seiner eigenen Umgebung; es ist ein bisschen sauberer Umsetzung, denn Sie können das gleiche script auf mehreren Maschinen, ohne hack, das Skript selbst. Kopieren Sie einfach die Datei auf einen anderen Computer, und legen Sie diePYTHONPATH
bevor Sie das Skript ausführen.Dies ist Recht trivial in die meisten Muscheln. In Windows, die Sie verwenden müssen, um die GUI zum festlegen der Umgebungsvariable
PYTHONPATH
.Option 3. Verwenden Sie eine
.pth
- Datei.Python sieht die
PYTHONPATH
variable, um das setup seinersys.path
Liste auf Start. Aber es sieht auch für spezielle.pth
Dateien im Python - site-packages Ordner. (Wenn Sie nicht wissen, wo die site-packages Ordner ist, dann ist das wohl ein weiterer StackOverflow-Frage.)Einfachsten
.pth
- Datei enthält eine einzige Zeile mit einem Datei-Pfad:Python wird das aufzunehmen und es auf der
sys.path
Liste.Diese
.pth
- Dateien können eine Menge mehr, aber das ist jenseits dessen, was Sie jetzt brauchen. Wenn du neugierig bist, Bob Ippoli hat mehr detail hier:http://bob.ippoli.to/archives/2005/02/06/using-pth-files-for-python-development/
Option 4: Verwenden Sie eine virtuelle Umgebung.
Dies ist nicht direkt eine Lösung deines Problems, aber ich erwähne es der Vollständigkeit halber. Python virtuelle Umgebungen ermöglichen es Ihnen, alle enthalten, die Abhängigkeiten für Ihre Anwendung in einem Selbstversorger-isolation-Kammer. Alle der oben genannten Optionen (1 bis 3) gelten weiterhin in einer virtuellen Umgebung, aber manchmal ist eine virtuelle Umgebung, die hilft, Dinge sauber zu halten...und verständlich.
Wenn Sie verwenden können, virtualenvwrapper, es macht virtuelle Umwelt-management ein Kinderspiel. Andernfalls können Sie die low-level - virtualenv (Python 2) und pyenv (Python 3), ohne viel Schmerzen.