python子进程设置shell var.然后运行命令 - 如何?

scy*_*gon 8 python subprocess

我需要这样做:

$ export PYRO_HMAC_KEY=123
$ python -m Pyro4.naming
Run Code Online (Sandbox Code Playgroud)

所以,我发现第二个可以做到

subprocess.Popen(['python','-m','Pyro4.naming'])
Run Code Online (Sandbox Code Playgroud)

但是之前如何导出shell变量呢?

che*_*ner 19

要更新现有环境......

import os, subprocess

d = dict(os.environ)   # Make a copy of the current environment
d['PYRO_HMAC_KEY'] = '123'
subprocess.Popen(['python', '-m', 'Pyro4.naming'], env=d)
Run Code Online (Sandbox Code Playgroud)

  • 或者作为一个单行:`env = dict(os.environ,PYRO_HMAC_KEY ='123') (4认同)

And*_*ark 8

env进程函数接受一个参数,该参数可以给出要在进程中使用的环境变量的映射:

subprocess.Popen(['python','-m','Pyro4.naming'], env={'PYRO_HMAC_KEY': '123'})
Run Code Online (Sandbox Code Playgroud)

  • 这使得子进程的环境为空,除了'PYRO_HMAC_KEY'. (3认同)