ls
这根本不起作用,我不明白为什么。
我想要做的所有事情我从我的python(3.5.1)脚本中设置一个环境变量,当我运行上面的行时,没有任何反应。没有引发错误,当我自己检查环境变量时,它尚未设置。
pwd
执行的其他shell命令,例如export
和.run()
,但不是.call()
。
.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上运行,这是我的机器运行的。
答案 0 :(得分:4)
工作正常;但是,变量设置仅存在于子流程中。您不能从孩子那里影响本地流程的环境。
os.environ
是正确的解决方案,因为它会更改本地流程的环境,并且任何以subprocess.run
启动的流程都会继承这些更改。
您还可以将env
参数用于run
:
subprocess.run(["cmdname", "arg1", "arg number 2"], env=dict(FOO='BAR', **os.environ))
这在包含FOO=BAR
的修改环境中运行命令,而不修改当前环境。