2012-07-05 4 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)에 대한 설명서가 명확하지 않습니다. 다른 키워드 인수가 (args, *, stdin = None, stdout = None, stderr = None, shell = False)' –

+3

@AliBZ : clear :'subprocess.call (cmd)'가 지원됩니다. 'subprocess.Popen (cmd) .wait()'즉,'Popen()'에 전달할 수있는 모든 인수를'call()'에 전달할 수 있습니다. – jfs