正在运行' export'命令与Pythons' subprocess'不起作用

时间:2016-05-17 11:37:42

标签: python bash shell command subprocess

ls

这根本不起作用,我不明白为什么。

我想要做的所有事情我从我的python(3.5.1)脚本中设置一个环境变量,当我运行上面的行时,没有任何反应。没有引发错误,当我自己检查环境变量时,它尚未设置。

pwd 执行的其他shell命令,例如export.run(),但不是.call()

在Python 3.5中添加了

.Popen()(如果您没有认识到它),但我也尝试使用os.environ['FOO'] = "BAR"export的上述行,没有任何更改在结果中。

我知道我可以使用os.environ在python中设置环境变量,但是我将在我的项目中使用shell命令,我希望我需要将多个命令串在一起,这将使比<div class="widget-content"> <# var cond_v; #> <# for ( i in data ) { #> <# if ( ! data.hasOwnProperty( i ) ) continue; #> <# field = data[i]; #> <# if ( ! field.type ) continue; #> ... 更容易使用{{1}}。

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

1 个答案:

答案 0 :(得分:4)

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

os.environ是正确的解决方案,因为它会更改本地流程的环境,并且任何以subprocess.run启动的流程都会继承这些更改。

您还可以将env参数用于run

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

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