15
votes

I'm using Popen because I need the env, like this:

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

The problem is Popen runs the command as a new thread. Is there any way that I could pass the env to subprocess.call or prevent Popen from creating a new thread? Thanx

1
unrelated: Popen() does NOT create a new thread (it creates a new process). - jfs
Just a reminder, env replaces the current environment. If you only want to modify it, create a copy first: new_env = dict(os.environ); new_env['PATH'] = path; Popen(args, env=new_env) - Flimm

1 Answers

25
votes

You can use env with call in the exact same way as with popen:

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