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

Есть ли способ изменить переменную среды PATH независимым от платформы способом с помощью python?

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

Ответ 1

Вы можете изменить os.environ.

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

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

или, если в списке есть несколько путей:

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

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

Ответ 2

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

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

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

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

Ответ 3

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