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. Нет способа вносить изменения в текущий процесс, только дочерние процессы.