How to set environment variables in Python?
Environment variables must be strings, so use
os.environ["DEBUSSY"] = "1"
to set the variable
DEBUSSY to the string
To access this variable later, simply use:
Child processes automatically inherit the environment variables of the parent process -- no special action on your part is required.
You may need to consider some further aspects for code robustness;
when you're storing an integer-valued variable as an environment variable, try
os.environ['DEBUSSY'] = str(myintvariable)
then for retrieval, consider that to avoid errors, you should try
os.environ.get('DEBUSSY', 'Not Set')
possibly substitute '-1' for 'Not Set'
so, to put that all together
myintvariable = 1os.environ['DEBUSSY'] = str(myintvariable)strauss = int(os.environ.get('STRAUSS', '-1'))# NB KeyError <=> strauss = os.environ['STRAUSS']debussy = int(os.environ.get('DEBUSSY', '-1'))print "%s %u, %s %u" % ('Strauss', strauss, 'Debussy', debussy)
os.environ behaves like a python dictionary, so all the common dictionary operations can be performed. In addition to the
set operations mentioned in the other answers, we can also simply check if a key exists. The keys and values should be stored as strings.
For python 3, dictionaries use the in keyword instead of has_key
import os'HOME' in os.environ # Check an existing env. variableTrue...
import os os.environ.has_key('HOME') # Check an existing env. variableTrueos.environ.has_key('FOO') # Check for a non existing variableFalseos.environ['FOO'] = '1' # Set a new env. variable (String value)os.environ.has_key('FOO')Trueos.environ.get('FOO') # Retrieve the value'1'
There is one important thing to note about using
Although child processes inherit the environment from the parent process, I had run into an issue recently and figured out, if you have other scripts updating the environment while your python script is running, calling
os.environ again will not reflect the latest values.
Excerpt from the docs:
This mapping is captured the first time the os module is imported,typically during Python startup as part of processing site.py. Changesto the environment made after this time are not reflected inos.environ, except for changes made by modifying os.environ directly.
os.environ.data which stores all the environment variables, is a dict object, which contains all the environment values:
type(os.environ.data) # changed to _data since v3.2 (refer comment below)<type 'dict'>