Python: niezależny od platformy sposób modyfikacji zmiennej środowiskowej PATH

Czy istnieje sposób na modyfikację zmiennej środowiskowej PATH w sposób niezależny od platformy przy użyciu Pythona?

Coś podobnego do os.path.join()?

Author: Ioannis Filippidis, 2009-11-05

3 answers

Powinieneś być w stanie zmodyfikować os.environ.

Ponieważ {[3] } jest znakiem oddzielającym różne ścieżki, powinieneś użyć tego do dodania każdej nowej ścieżki:

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

Lub, jeśli istnieje kilka ścieżek do dodania na liście:

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

Jak już wspomniałeś, os.path.join może być również używany dla każdej ścieżki, którą musisz dodać w przypadku, gdy musisz zbudować je z oddzielnych części.

 125
Author: RedGlyph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-05 15:40:02

Proszę zauważyć, że {[1] } nie jest w rzeczywistości słownikiem. Jest to specjalny słownik-Jak obiekt, który ustawia zmienne środowiskowe w bieżącym procesie za pomocą setenv.

>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'

Oznacza to, że PATH (i inne zmienne środowiskowe) będą widoczne dla kodu C uruchomionego w tym samym procesie.

(ponieważ komentarze nie mogą zawierać formatowania, muszę umieścić to w odpowiedzi, ale czuję, że jest to ważny punkt do zrobienia. To jest naprawdę komentarz na komentarz o braku odpowiednika "export" .)

 14
Author: Glyph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 13:50:36

Zastrzeżenie, o którym należy pamiętać przy modyfikowaniu zmiennych środowiskowych w Pythonie, jest takie, że nie ma odpowiednika polecenia "export" powłoki. Nie ma możliwości wprowadzania zmian do bieżącego procesu, tylko procesy potomne.

 7
Author: Matt T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-05 15:24:26