Есть ли способ изменить PATH
переменную среды независимо от платформы с помощью python?
Что-то похожее на os.path.join()
?
Есть ли способ изменить 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
вызывает копирование переменной в среду всех дочерних процессов, но не влияет на родительский процесс.