Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python子进程设置shell变量,然后运行命令-how?_Python_Subprocess - Fatal编程技术网

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()