python子进程设置shell变量,然后运行命令-how?
我需要这样做:python子进程设置shell变量,然后运行命令-how?,python,subprocess,Python,Subprocess,我需要这样做: $ export PYRO_HMAC_KEY=123 $ python -m Pyro4.naming 所以,我发现第二个可能与 subprocess.Popen(['python','-m','Pyro4.naming']) 但是在此之前如何导出shell变量?子流程函数接受一个env参数,该参数可以被赋予在流程中使用的环境变量映射: subprocess.Popen(['python','-m','Pyro4.naming'], env={'PYRO_HMAC_KEY':
$ export PYRO_HMAC_KEY=123
$ python -m Pyro4.naming
所以,我发现第二个可能与
subprocess.Popen(['python','-m','Pyro4.naming'])
但是在此之前如何导出shell变量?子流程函数接受一个
env
参数,该参数可以被赋予在流程中使用的环境变量映射:
subprocess.Popen(['python','-m','Pyro4.naming'], env={'PYRO_HMAC_KEY': '123'})
请尝试os.putenv():更新现有环境
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)
这使得子流程的环境除了“PYRO_HMAC_KEY”之外都是空的。您是否有令人信服的理由从shell切换到Python?如果shell脚本工作正常,可以很容易地从Python中调用它。是的,我不想创建额外的文件,比如
run\u me.sh
不是这样。。。规范方式:)或作为一行代码:env=dict(os.environ,PYRO\u HMAC\u KEY='123')
env设置可以与子流程一起使用。检查
和subprocess.run()
。