Gibt es eine Möglichkeit, die PATH
Umgebungsvariable mithilfe von Python plattformunabhängig zu ändern ?
Ähnliches os.path.join()
?
Antworten:
Sie sollten in der Lage sein zu ändern os.environ
.
Da os.pathsep
es sich bei dem Zeichen um das Trennen verschiedener Pfade handelt, sollten Sie dies verwenden, um jeden neuen Pfad anzuhängen:
os.environ["PATH"] += os.pathsep + path
oder, wenn einer Liste mehrere Pfade hinzugefügt werden müssen:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Wie Sie bereits erwähnt haben, os.path.join
kann es auch für jeden einzelnen Pfad verwendet werden, den Sie anhängen müssen, falls Sie sie aus separaten Teilen erstellen müssen.
os.pathsep
ich erwähnt habe (spezifisch für PATH)?
os.path.sep != os.pathsep
.
Bitte beachten Sie, dass os.environ
dies eigentlich kein Wörterbuch ist. Es ist ein besonderer dictionary- wie Objekt , das tatsächlich Umgebungsvariablen im aktuellen Prozess setzt mit setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Dies bedeutet , dass PATH
(und andere Umgebungsvariablen) wird im gleichen Prozess zu C - Code ausführen sichtbar.
(Da Kommentare keine Formatierung enthalten können, muss ich dies in eine Antwort einfügen, aber ich denke, es ist ein wichtiger Punkt. Dies ist wirklich ein Kommentar zu dem Kommentar, dass es kein Äquivalent zu 'Export' gibt .)
Die Einschränkung beim Ändern von Umgebungsvariablen in Python besteht darin, dass es kein Äquivalent zum Shell-Befehl "export" gibt. Es gibt keine Möglichkeit, Änderungen in den aktuellen Prozess einzufügen, sondern nur untergeordnete Prozesse.
os.system
, os.popen
oder subprocess.Popen
sollte dann von der Python - Anwendung verwendet werden , um andere Prozesse zu starten. Ansonsten ist es ziemlich sinnlos.
export
bewirkt, dass eine Variable in die Umgebung aller untergeordneten Prozesse kopiert wird, hat jedoch keine Auswirkungen auf den übergeordneten Prozess.