wake-up-neo.com

Python: Plattformunabhängige Methode zum Ändern der Umgebungsvariablen PATH

Gibt es eine Möglichkeit, die Umgebungsvariable PATH mithilfe von Python plattformunabhängig zu ändern?

Etwas Ähnliches wie os.path.join()?

77
resi

Sie sollten in der Lage sein, os.environ Zu ändern.

Da os.pathsep Das Zeichen ist, um verschiedene Pfade zu trennen, sollten Sie dies verwenden, um jeden neuen Pfad anzuhängen:

os.environ["PATH"] += os.pathsep + path

oder, wenn es mehrere Pfade gibt, die zu einer Liste hinzugefügt werden müssen:

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

Wie Sie bereits erwähnt haben, kann os.path.join Auch für jeden einzelnen Pfad verwendet werden, den Sie anhängen müssen, falls Sie sie aus separaten Teilen erstellen müssen.

149
RedGlyph

Bitte beachte, dass os.environ ist eigentlich kein Wörterbuch. Es ist ein spezielles Wörterbuch - wie ein Objekt, das Umgebungsvariablen im aktuellen Prozess mithilfe von setenv festlegt.

>>> 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) für C-Code sichtbar sind , der im selben Prozess ausgeführt wird.

(Da Kommentare keine Formatierung enthalten können, muss ich dies in eine Antwort einfügen, aber ich denke, dass dies ein wichtiger Punkt ist. Dies ist wirklich ein Kommentar zu der Kommentar, dass es kein Äquivalent zu "Exportieren" gibt). .)

17
Glyph

Beachten Sie beim Ändern von Umgebungsvariablen in Python, 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.

6
Matt T