webentwicklung-frage-antwort-db.com.de

hinzufügen eines Verzeichnisses zu sys.path/PYTHONPATH

Ich versuche ein Modul aus einem bestimmten Verzeichnis zu importieren. 

Das Problem ist, dass, wenn ich sys.path.append(mod_directory) zum Anhängen des Pfads und dann zum Öffnen des Python-Interpreters verwende, das Verzeichnis mod_directory am Ende der Liste sys.path hinzugefügt wird. Wenn ich die Variable PYTHONPATH vor dem Öffnen des Python-Interpreters exportiere, wird das Verzeichnis an den Anfang der Liste hinzugefügt. Im letzteren Fall kann ich das Modul importieren, aber im ersteren nicht.

Kann jemand erklären, warum das so ist, und mir eine Lösung geben, um den mod_directory zum Start hinzuzufügen, inside ein Python-Skript?

Dies funktioniert wie dokumentiert. Alle in PYTHONPATH angegebenen Pfade werden so dokumentiert, dass sie normalerweise nach dem Arbeitsverzeichnis, jedoch vor den vom Standard-Interpreter bereitgestellten Pfaden kommen. sys.path.append() hängt an den vorhandenen Pfad an. hier und hier . Wenn Sie möchten, dass ein bestimmtes Verzeichnis an erster Stelle steht, fügen Sie es einfach am Kopf von sys.path ein:

import sys
sys.path.insert(0,'/path/to/mod_directory')

Allerdings gibt es normalerweise bessere Möglichkeiten, Importe zu verwalten, als entweder PYTHONPATH oder die direkte Bearbeitung von sys.path. Siehe zum Beispiel die Antworten auf diese Frage .

128
Ned Deily

Du könntest benutzen:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path

Für mich muss ich zu meinem Pythonpfad gehen. Ich kann den Pfad zur Datei hinzufügen /home/xy/.bashrc durch add 

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH.

in meine /home/xy/.bashrc-Datei.

Aber wenn ich pycharm benutze, ist der Pfad immer noch nicht in.

So kann ich den Pfad zur Variable PYTHONPATH hinzufügen, indem Sie -> Konfiguration bearbeiten.

 enter image description here

3
Jayhello

Wenn Sie ein Python-Skript von Powershell unter Windows ausführen, sollte dies funktionieren:

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"

# Now run the actual script
python your_script.py
0
Alexander Pacha

Das temporäre Ändern der Verzeichnisse funktioniert gut beim Importieren:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
0
user3517603