subprocess.run('export FOO=BAR', shell=True)
这根本行不通,我不知道为什么。
我想做的就是从 python (3.5.1) 脚本中设置一个环境变量,当我运行上面的行时,什么也没有发生。没有引发任何错误,当我自己检查环境变量时,它尚未设置。
其他 shell 命令subprocess.run()
do工作,例如ls
and pwd
, 但不是export
.
.run()
是在 Python 3.5 中添加的(以防你不认识它),但我也尝试过上面的行.call()
and .Popen()
,结果没有变化。
我知道我可以在 python 中设置环境变量os.environ['FOO'] = "BAR"
,但我将在我的项目中大量使用 shell 命令,并且我希望我需要将多个命令串在一起,这将使使用export
比os.environ
.
我的项目将在 Linux 上运行,这也是我的机器所运行的。
效果很好;但是,变量设置仅存在于子流程中。您不能从子进程影响本地进程的环境。
os.environ
是正确的解决方案,因为它更改了本地进程的环境,并且这些更改将由以subprocess.run
.
您还可以使用env
论证run
:
subprocess.run(["cmdname", "arg1", "arg number 2"], env=dict(FOO='BAR', **os.environ))
这将在修改后的环境中运行该命令,其中包括FOO=BAR
无需修改当前环境。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)