Python: Persistent shell variables in subprocess

persistent, python, shell, subprocess, variables

Solution

`subprocess.Popen` takes an optional named argument `env` that's a dictionary to use as the subprocess's environment (what you're describing as "shell variables"). Prepare a dict as you need it (you may start with a copy of `os.environ` and alter that as you need) and pass it to all the `subprocess.Popen` calls you perform.

Problem

I'm trying to execute a series of commands using Pythons subprocess module, however I need to set shell variables with export before running them. Of course the shell doesn't seem to be persistent so when I run a command later those shell variables are lost. Is there any way to go about this? I could create a /bin/sh process, but how would I get the exit codes of the commands run under that?

Original source