Antworten:
Sie setzen nicht PYTHONPATH
, Sie fügen Einträge hinzu sys.path
. Es ist eine Liste von Verzeichnissen, die nach Python-Paketen durchsucht werden sollten, sodass Sie Ihre Verzeichnisse einfach an diese Liste anhängen können.
sys.path.append('/path/to/whatever')
Tatsächlich wird sys.path
es durch Aufteilen des Werts des Pfadtrennzeichens initialisiert PYTHONPATH
( :
auf Linux-ähnlichen Systemen ;
unter Windows).
Sie können Verzeichnisse auch mit hinzufügen site.addsitedir
, und diese Methode berücksichtigt auch .pth
Dateien, die in den von Ihnen übergebenen Verzeichnissen vorhanden sind. (Dies wäre bei Verzeichnissen, in denen Sie angeben, nicht der Fall PYTHONPATH
.)
Sie können Umgebungsvariablen abrufen und festlegen über os.environ
:
import os
user_home = os.environ["HOME"]
os.environ["PYTHONPATH"] = "..."
Da Ihr Interpreter jedoch bereits ausgeführt wird, hat dies keine Auswirkungen. Du bist besser dran
import sys
sys.path.append("...")
Dies ist das Array, PYTHONPATH
in das Sie beim Start des Interpreters umgewandelt werden.
Wenn Sie sys.path.append('dir/to/path')
ohne Prüfung setzen, ist es bereits hinzugefügt, können Sie eine lange Liste in generieren sys.path
. Dafür empfehle ich Folgendes:
import sys
import os # if you want this directory
try:
sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
sys.path.append('/dir/path') # Or os.getcwd() for this directory
Sie können festlegen PYTHONPATH
, bis os.environ['PATHPYTHON']=/some/path
, dann müssen Sie aufrufen os.system('python')
, um die Python-Shell neu zu starten, damit der neu hinzugefügte Pfad wirksam wird.
os.system()
"startet die Python-Shell nicht neu", sondern startet eine neue interaktive Python-Instanz. Wenn Sie davon zurückkehren, befinden Sie sich wieder im aufrufenden Skript.
sys.path.insert(0, '/path/to/whatever')
.