Я полагаю, что выполнение внешней команды с немного измененной средой является очень общим падежом. Это - то, как я склонен делать это:
import subprocess, os
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
У меня есть инстинктивное чувство, что существует лучший путь; это выглядит в порядке?
you might use my_env.get("PATH", '')
instead of my_env["PATH"]
in case PATH
somehow not defined in the original environment, but other than that it looks fine.
Параметр env принимает Словарь. Вы можете просто взять os.environ, добавить к нему ключ (желаемую переменную) (к копии dict, если необходимо) и использовать его в качестве параметра для Popen
.
В определенных обстоятельствах вы можете захотеть передать только те переменные среды, которые нужны вашему подпроцессу, но я думаю, что в целом вы поняли правильную идею (вот как Я тоже так делаю).