2012-07-05 15 views
8

私はENVを必要とするので、私はこのように、popenのを使用しています:subprocess.callののenv VAR

Popen(
    ["boto-rsync", "..."], 
    env={"PATH":"/Library/Frameworks/Python.framework/Versions/2.7/bin/"}, 
    ) 

問題がPopenある新しいスレッドのようにコマンドを実行します。 envsubprocess.callに渡したり、Popenが新しいスレッドを作成しないようにする方法はありますか? ありがとう

+1

無関係: 'popenの()'(それは新しい*プロセス*を作成する)新しいスレッドを作成しません。 – jfs

答えて

17

あなたはpopenのようにまったく同じ方法で、呼び出しでenvを使用することができます。

subprocess.call(
    ["boto-rsync", "..."], 
    env={"PATH":"/Library/Frameworks/Python.framework/Versions/2.7/bin/"}, 
    ) 
+0

なぜなら、私はそれを試していない理由を知らない!私はオプションを見つけることができなかったと思う。 – AliBZ

+3

@AliBZ [subprocess.call](https://docs.python.org/2/library/subprocess.html#subprocess.call)のドキュメントは、その点では明確ではありません。他のキーワードの引数は'subprocess.call(args、*、stdin = None、stdout = None、stderr = None、shell = False)の小さなアスタリスクがサポートされています ' –

+3

@AliBZ:クリアする:' subprocess.call(cmd) 'is 'subprocess.Popen(cmd).wait()'つまり、 'Popen()'に渡すことができるすべての引数を 'call()'に渡すことができます。 – jfs

関連する問題