Это неправильно. os.environ
возвращает среду текущего процесса. На этом уровне нет понятия пользовательских или системных переменных.
Вы можете, конечно, изменить любую из этих переменных окружения. Для PATH
просто сделать:
os.environ['PATH'] = new_path
Но вы только изменения текущего процесса среды. Это означает, что эта новая среда будет использоваться текущим процессом и всеми его дочерними элементами, но исчезнет в конце процесса.
Там нет переносимого способа изменить среду вызова оболочки
Во всяком случае в окнах, вы можете изменить постоянные переменные окружения с помощью команды setx
. Например, если вы хотите установить на изменение среды пользователя переменной FOO
в bar
, вы могли бы сделать в питон скрипт:
import os
os.system("setx FOO bar")
Но это изменение будет использоваться только процессами начинается с Windows Explorer, после того, как команда была казнены. В частности, ни среда сценария python, ни имя вызывающего cmd.exe
, если они будут изменены, будут изменены.
Вы хотите изменить PATH var только для своей программы или хотите изменить PATH пользователя навсегда? –
Не уверен, что вы имеете в виду. Мне нужно добавить папку в путь, и есть 2 варианта (2 переменные PATH): один в «системных переменных», требующий прав администратора для изменения, и один в «пользовательских переменных», который не – KKO