Mein Code lautet:
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
Da sich die scriptlib jedoch in einem anderen Verzeichnis befindet, muss ich dieses Verzeichnis in die Umgebungsvariable "PYTHONPATH" aufnehmen.
Gibt es sowieso eine Möglichkeit, in der ich zuerst das scriptlib-Verzeichnis in der Umgebungsvariablen "PYTHONPATH" hinzufügen kann, bevor die import-Anweisung wie folgt ausgeführt wird:
import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
Wenn ja, ist der Wert nur für diese Eingabeaufforderung oder global?
Danke im Voraus
python
path
pythonpath
DKG
quelle
quelle
sys.path
ist jedoch lokal für Ihr Programm (die$PYTHONPATH
Variable wird nur beim Starten des zu füllenden Interpreters gelesen undsys.path
nicht in die Umgebung zurückgeschrieben).Antworten:
Dadurch wird Ihrem Python-Prozess / Ihrer Python-Instanz ein Pfad hinzugefügt (dh die laufende ausführbare Datei). Der Pfad wird für keine anderen Python-Prozesse geändert. Bei einem anderen laufenden Python-Programm wird der Pfad nicht geändert. Wenn Sie das Programm beenden und erneut ausführen, enthält der Pfad nicht das, was Sie zuvor hinzugefügt haben. Was Sie tun, ist im Allgemeinen richtig.
set.py:
import sys sys.path.append("/tmp/TEST")
loop.py
import sys import time while True: print sys.path time.sleep(1)
Lauf:
python loop.py &
Dadurch wird loop.py ausgeführt, das mit Ihrem STDOUT verbunden ist, und es wird weiterhin im Hintergrund ausgeführt. Sie können dann laufen
python set.py
. Jedes hat einen anderen Satz von Umgebungsvariablen. Beachten Sie, dass sich die Ausgabe vonloop.py
nicht ändert, daset.py
sich dieloop.py
Umgebung nicht ändert .Ein Hinweis zum Importieren
Python-Importe sind wie der Rest der Sprache dynamisch. Es findet keine statische Verknüpfung statt. Der Import ist genau wie eine ausführbare Zeile
sys.path.append...
.quelle
Wie auch in den Dokumenten hier vermerkt .
Gehen Sie zu
Python X.X/Lib
und fügen Sie diese Zeilen hinzusite.py
.import sys sys.path.append("yourpathstring")
Dies ändert Ihre,
sys.path
so dass bei jeder Last dieser Wert darin enthalten ist.Wie hier über angegeben
site.py
,Für andere mögliche Methoden einiger Pfade Hinzufügen zu
sys.path
sehen , diese Dokumentequelle
python.exe
as angehängt, dersite.py
bei der Initialisierung automatisch geladen wird. Sie benötigen ihn also nichtimport sys sys.path.append....
in jeder Datei.Python
soll in dieser Situation wissen, auf welche Datei Sie sich beziehen? Sie sollten einfach nicht 2 Dateien gleich