运行 'export' 使用 Python 的命令 'subprocess' 不起作用

Running 'export' command with Pythons 'subprocess' does not work

subprocess.run('export FOO=BAR', shell=True)

这根本行不通,我不知道为什么。

我想做的就是从我的 python (3.5.1) 脚本中设置一个环境变量,当我 运行 上述行时,没有任何反应。没有报错,我自己查看环境变量的时候也没有设置。

其他 shell 命令与 subprocess.run() 工作,例如 lspwd,但不是 export.

.run() 是在 Python 3.5 中添加的(以防你不认识它),但我也尝试过使用 .call().Popen() ,结果没有变化。

我知道我可以在 python 和 os.environ['FOO'] = "BAR" 中设置环境变量,但我会在我的项目中大量使用 shell 命令,我希望我会需要将多个命令串在一起,这将使使用 exportos.environ.

更容易

我的项目将 运行 运行在 Linux 上,我的机器 运行 正在运行。

工作正常;但是,变量设置仅存在于子流程中。您不能从子进程影响本地进程的环境。

os.environ 是正确的解决方案,因为它更改了本地进程的环境,并且这些更改将被以 subprocess.run.

启动的任何进程继承

您还可以将 env 参数用于 run:

subprocess.run(["cmdname", "arg1", "arg number 2"], env=dict(FOO='BAR', **os.environ))

这会在包含 FOO=BAR 的修改环境中运行命令,而不修改当前环境。