Dauerhaftes Hinzufügen eines Dateipfads zu sys.path in Python

97

Ich hatte eine Datei mit dem Namen example_file.py, die ich aus verschiedenen anderen Dateien verwenden wollte, so dass ich hinzufügen entschieden example_file.pyzu sys.pathund importieren Sie diese Datei in einer anderen Datei , um die Datei zu verwenden. Zu diesem Zweck habe ich in IPython Folgendes ausgeführt.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

Ich konnte den Pfad sehen, den ich gerade hinzugefügt hatte, und als ich versuchte, diese Datei aus einem anderen Verzeichnispfad wie diesem zu importieren:

import example_file

Es funktionierte einwandfrei, aber als ich aus IPython herauskam, es erneut sys.patheingab und das überprüfte , stellte ich fest, dass der von mir hinzugefügte Pfad nicht vorhanden war. Wie füge ich also in Python dauerhaft einen Pfad zu sys.path hinzu?

Shiva Krishna Bavandla
quelle
3
Machen Sie Ihren Code zu einem richtigen Paket, machen Sie es einfach_installierbar und freuen Sie sich für den Rest Ihres Lebens (anstatt zu basteln). Abgesehen davon: In jeder Dokumentation wird CLEARLY angegeben, dass sys.path.append()ein Verzeichnis akzeptiert wird, das eine Datei und keinen einzigen Pfad zu einer Datei enthält.
Andreas Jung
Mögliches Duplikat des dauerhaften Hinzufügens eines Ordners zu Pythons Pfad
DhruvPathak
Verwechseln Sie den Systempfad nicht mit PYTHONPATH.
Burhan Khalid

Antworten:

94

Es gibt einige Möglichkeiten. Eine der einfachsten Möglichkeiten besteht darin, eine my-paths.pthDatei zu erstellen (wie hier beschrieben ). Dies ist nur eine Datei mit der Erweiterung .pth, die Sie in Ihr Systemverzeichnis gestellt haben site-packages. In jede Zeile der Datei geben Sie einen Verzeichnisnamen ein, damit Sie dort eine Zeile einfügen können, /path/to/the/und dieses Verzeichnis wird dem Pfad hinzugefügt.

Sie können auch die Umgebungsvariable PYTHONPATH verwenden, die der Systemvariablen PATH ähnelt, jedoch Verzeichnisse enthält, die hinzugefügt werden sys.path. Siehe die Dokumentation .

Beachten Sie, dass , egal was Sie tun, sys.pathenthält Verzeichnisse keine Dateien. Sie können keine Datei hinzufügen sys.path. Sie fügen immer das Verzeichnis hinzu und können dann die Datei importieren.

BrenBarn
quelle
1
OK, danke, das ist in Ordnung. Ich habe mein Verzeichnis hinzugefügt, das aus einer Datei besteht und funktioniert, wenn ich die Datei von einem anderen Speicherort importiert habe. Ich möchte es nicht jedes Mal tun, wenn ich den Code eingegeben habe, ich möchte den Verzeichnispfad dauerhaft zu sys.path hinzufügen, wie das geht
Shiva Krishna Bavandla
@Kouripm: Ihr Kommentar deutet darauf hin, dass Sie weder meinem Vorschlag noch den Vorschlägen in dem oben verlinkten doppelten Beitrag gefolgt sind.
BrenBarn
1
Das sitePaket war perfekt.
Zeinab Abbasimazar
8
habe mein Problem mit sys.path.append('C:\\python34\\lib\\site-packages')Danke behoben !
Tylerlindell
Für die Nachwelt: Die .pthDatei wird in der Site-Modul-Dokumentation als a bezeichnet path configuration file. Bemerkenswert über die Pfadkonfigurationsdatei:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran
1

Dieser Weg hat bei mir funktioniert:

Hinzufügen des gewünschten Pfads:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

Überprüfen: Sie können 'export' cmd ausführen und die Ausgabe überprüfen oder Sie können es mit diesem cmd überprüfen:

python -c "import sys; print(sys.path)"
Pandous
quelle