subprocess.run('export FOO=BAR', shell=True)
这根本行不通,我不知道为什么。
我正在尝试做的是从我的 python (3.5.1) 脚本中设置一个环境变量,当我运行上面的行时,没有任何反应。没有报错,我自己检查环境变量,也没有设置。
其他带有 subprocess.run()
的 shell 命令 可以 工作,例如 ls
和 pwd
,但是不是导出
。
.run()
是在 Python 3.5 中添加的(以防你不认识它),但我也尝试过使用 .call()
和 .Popen()
,结果没有变化。
我知道我可以在 python 中使用 os.environ['FOO'] = "BAR"
设置环境变量,但我会在我的项目中大量使用 shell 命令,而且我希望我需要将多个命令串在一起,这将使使用 export
比 os.environ
更容易。
我的项目将在 Linux 上运行,这就是我的机器运行的平台。
最佳答案
它工作正常;但是,变量设置仅存在于子流程中。您不能影响子进程的本地进程环境。
os.environ
是正确的解决方案,因为它更改了本地进程的环境,并且这些更改将被以 subprocess.run
启动的任何进程继承。
您还可以使用 env
参数来运行
:
subprocess.run(["cmdname", "arg1", "arg number 2"], env=dict(FOO='BAR', **os.environ))
这会在包含 FOO=BAR
的修改环境中运行命令,而不会修改当前环境。
关于python - 使用 Python 'export' 运行 'subprocess' 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275033/