Python: независимый от платформы способ изменения переменной среды PATH


есть ли способ изменить PATH переменная окружения независимым от платформы способом с использованием python?

что-то похожее на os.path.join()?

3 68

3 ответа:

вы должны быть в состоянии изменить os.environ.

С os.pathsep это символ для разделения различных путей, вы должны использовать это, чтобы добавить каждый новый путь:

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

или, если есть несколько путей, чтобы добавить в список:

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

как вы сказали, os.path.join также может использоваться для каждого отдельного пути, вы должны добавить в случае, если вы должны построить их из отдельных частей.

обратите внимание:os.environ на самом деле не словарь. Это специальный словарь-как объект, который фактически устанавливает переменные среды в текущем процессе с помощью setenv.

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

Это означает, что PATH (и другие переменные среды) будет быть видимым для кода C, выполняемого в том же процессе.

(поскольку комментарии не могут содержать форматирование, я должен поместить это в ответ, но я чувствую, что это важно точку, чтобы сделать. Это действительно комментарий комментарий о том, что нет эквивалента "экспорт".)

предостережение, которое следует учитывать при изменении переменных среды в Python, заключается в том, что нет эквивалента команды оболочки "экспорт". Нет никакого способа внести изменения в текущий процесс, только дочерние процессы.