您可以执行此操作,但在文档中查找如何执行此操作有点像白费力气。
The subprocess.call()文档 http://docs.python.org/2/library/subprocess.html#subprocess.call says,
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
上面显示的参数只是最常见的参数,如下所述常用参数 http://docs.python.org/2/library/subprocess.html#frequently-used-arguments(因此缩写签名中的符号有点奇怪)。
然后常用参数 http://docs.python.org/2/library/subprocess.html#frequently-used-arguments在描述了一堆其他论点后,最后一节说:
这些选项以及所有其他选项在Popen http://docs.python.org/2/library/subprocess.html#subprocess.Popen构造函数文档。
好吧!这Popen http://docs.python.org/2/library/subprocess.html#subprocess.Popen文档给出了完整的签名:
class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
env
就是你想要的那个!然而,如果你刚刚通过env={'JAVA_OPTS': 'foo'}
,那么这将覆盖all环境变量,包括诸如CLASSPATH
,这可能会破坏其他东西。所以你可能想使用这样的代码来添加JAVA_OPTS
新进程执行的环境变量,无需在当前进程中设置:
#!/usr/bin/env python2.7
import os
import subprocess
# Make a copy of the environment
env = dict(os.environ)
env['JAVA_OPTS'] = 'foo'
subprocess.call(['java', '-jar', 'temp.jar'], env=env)