Есть ли способ изменить PATH
переменную среды независимо от платформы с помощью python?
Что-то похожее на os.path.join()
?
Ответы:
Вы должны иметь возможность изменять os.environ
.
Поскольку os.pathsep
это символ для разделения разных путей, вы должны использовать его для добавления каждого нового пути:
os.environ["PATH"] += os.pathsep + path
или, если есть несколько путей для добавления в список:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Как вы упомянули, os.path.join
также можно использовать для каждого отдельного пути, который вы должны добавить, если вам нужно построить их из отдельных частей.
os.pathsep
я упомянул (конкретно для PATH)?
os.path.sep != os.pathsep
.
Обратите внимание, что на os.environ
самом деле это не словарь. Это специальный объект, подобный словарю, который фактически устанавливает переменные среды в текущем процессе с помощью setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Это означает, что PATH
(и другие переменные среды) будут видны для кода C, запущенного в том же процессе.
(Поскольку комментарии не могут содержать форматирование, я должен указать это в ответе, но я считаю, что это важный момент. Это действительно комментарий к комментарию об отсутствии эквивалента «экспорта» .)
Предостережение, о котором следует помнить при изменении переменных среды в Python, заключается в том, что не существует эквивалента команды оболочки "export". Нет возможности вносить изменения в текущий процесс, только дочерние процессы.
os.system
, os.popen
или subprocess.Popen
должны быть затем использован из приложения Python для запуска других процессов. В противном случае это практически бессмысленно.
export
вызывает копирование переменной в среду всех дочерних процессов, но не влияет на родительский процесс.