Це залежить від проблеми. Якщо це клонувати та змінювати середовище, одним із рішень може бути:
subprocess.Popen(my_command, env=dict(os.environ, PATH="path"))
Але це дещо залежить від того, що замінені змінні є дійсними ідентифікаторами python, якими вони найчастіше є (як часто ви наштовхуєтесь на назви змінних оточуючих, які не буквено-цифрові + підкреслення або змінні, що починаються з числа?).
Інакше ви можете написати щось на кшталт:
subprocess.Popen(my_command, env=dict(os.environ,
**{"Not valid python name":"value"}))
У дуже дивному випадку (як часто ви використовуєте контрольні коди або символи, що не входять в ascii, в назвах змінних оточуючих?), Що ключі оточення bytes
ви не можете (на python3) навіть використовувати цю конструкцію.
Як ви бачите, використовувані тут методи (особливо перші), переваги на клавішах середовища, як правило, є дійсними ідентифікаторами пітона, а також відомими заздалегідь (під час кодування), другий підхід має проблеми. У випадках, коли це не так, вам, мабуть, слід шукати інший підхід .
os.pathsep
замість ":" для шляхів, які працюють на платформах. Див stackoverflow.com/questions/1499019 / ...