Python2.7 subprocess32:如何在通过 Popen 执行的两个脚本之间共享环境?
Python2.7 subprocess32: how to share environment between two scripts executed via Popen?
我有2个脚本:1.配置一个,它修改了大约20个环境变量并在里面运行另一个小脚本,2.进程一个使用script1设置的环境变量来做一些事情。
我试图通过 Python2.7 subprocess32.Popen() 一个一个地执行它们,并将相同的环境变量传递给两个 Popen。没有成功,来自 script1 的环境对于 script2
来说是空的
import os
import subprocess32 as subprocess
my_env = os.environ
subprocess.Popen(script1, env=my_env)
subprocess.Popen(script2, env=my_env)
我如何才能真正在 2 个脚本之间共享环境?
我认为问题出在my_env=my_env
,第二个参数需要是env
。
my_env = os.environ
subprocess.Popen(script1, env=my_env)
my_env = os.environ
subprocess.Popen(script2, env=my_env)
当第一个子进程退出时,对其环境的更改就消失了。此类更改只会传播到它自己的子流程。你需要做这样的事情:
import shlex
subprocess.Popen(". {}; {}".format(shlex.quote(script1),
shlex.quote(script2)),
shell=True)
但一如既往,使用 shell=True
会引入安全问题。
我有2个脚本:1.配置一个,它修改了大约20个环境变量并在里面运行另一个小脚本,2.进程一个使用script1设置的环境变量来做一些事情。
我试图通过 Python2.7 subprocess32.Popen() 一个一个地执行它们,并将相同的环境变量传递给两个 Popen。没有成功,来自 script1 的环境对于 script2
来说是空的import os
import subprocess32 as subprocess
my_env = os.environ
subprocess.Popen(script1, env=my_env)
subprocess.Popen(script2, env=my_env)
我如何才能真正在 2 个脚本之间共享环境?
我认为问题出在my_env=my_env
,第二个参数需要是env
。
my_env = os.environ
subprocess.Popen(script1, env=my_env)
my_env = os.environ
subprocess.Popen(script2, env=my_env)
当第一个子进程退出时,对其环境的更改就消失了。此类更改只会传播到它自己的子流程。你需要做这样的事情:
import shlex
subprocess.Popen(". {}; {}".format(shlex.quote(script1),
shlex.quote(script2)),
shell=True)
但一如既往,使用 shell=True
会引入安全问题。