2009-07-14 4 views
8

Я пытаюсь выполнить ряд команд с использованием модуля подпроцессов Pythons, однако мне нужно установить переменные оболочки с экспортом перед их запуском. Конечно, оболочка не кажется постоянной, поэтому, когда я запускаю команду позже, эти переменные оболочки теряются.Python: постоянные переменные оболочки в подпроцессе

Есть ли способ обойти это? Я мог бы создать процесс/bin/sh, но как бы получить коды выхода команд под этим?

ответ

13

subprocess.Popen принимает необязательный именованный аргумент env, который является словарем для использования в качестве среды подпроцесса (что вы описываете как «переменные оболочки»). Подготовьте диктовку, как вам это нужно (вы можете начать с копии os.environ и изменить ее по мере необходимости) и передать ее на все вызовы subprocess.Popen, которые вы выполняете.

+0

Отлично, спасибо. – PeterBelm

+0

@PeterBelm, добро пожаловать! –

5

Alex абсолютно правильный. Например,

current_env=environ.copy() 
current_env["XXX"] = "SOMETHING" #If you want to change some env variable 
subProcess.Popen("command_n_args", env=current_env) 
Смежные вопросы