これを行うことはできますが、ドキュメントでその方法を見つけることは、一種の野生のガチョウ追跡です.
subprocess.call()
ドキュメントによると、
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
上に示した引数は、以下のよく使用される引数
で説明する最も一般的なものにすぎません(したがって、省略された署名の表記法は少し奇妙です)。
次に、よく使用される引数のセクションでは、他の引数の束を説明した後、最後に次のように述べています。
これらのオプションは、他のすべてのオプションとともに、Popen
コンストラクターのドキュメントで詳しく説明されています。
じゃあ!ドキュメントは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'}
が上書きされ、他のものが壊れる可能性があります。したがって、次のようなコードを使用して、現在のプロセスで設定せずに、新しいプロセス実行用の環境変数を追加することをお勧めします。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)