Python: постоянные переменные оболочки в подпроцессе - PullRequest
8 голосов
/ 14 июля 2009

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

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

Ответы [ 2 ]

13 голосов
/ 14 июля 2009

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

5 голосов
/ 27 августа 2009

Алекс абсолютно прав. Для примера

current_env=environ.copy()
current_env["XXX"] = "SOMETHING" #If you want to change some env variable
subProcess.Popen("command_n_args", env=current_env)
...