- How to Set and Get Environment Variables in Python
- Storing local env variables
- Environment Variables in Python – Read, Print, Set
- Environment Variables in Python
- How to Read Environment Variables in Python
- Printing all the Environment Variables in Python
- Getting Specific Environment Variable Value
- How to Check if an Environment Variable Exists?
- How to Set Environment Variable in Python
- Conclusion
- References:
How to Set and Get Environment Variables in Python
To set and get environment variables in Python you can just use the os module:
import os # Set environment variables os.environ['API_USER'] = 'username' os.environ['API_PASSWORD'] = 'secret' # Get environment variables USER = os.getenv('API_USER') PASSWORD = os.environ.get('API_PASSWORD') # Getting non-existent keys FOO = os.getenv('FOO') # None BAR = os.environ.get('BAR') # None BAZ = os.environ['BAZ'] # KeyError: key does not exist.
Note that using getenv() or the get() method on a dictionary key will return None if the key does not exist. However, in the example with BAZ , if you reference a key in a dictionary that does not exist it will raise a KeyError .
Environment variables are useful when you want to avoid hard-coding access credentials or other variables into code. For example, you may need to pass in API credentials for an email service provider in order to send email notifications but you wouldn’t want these credentials stored in your code repository. Or perhaps you need your code to function slightly differently between your development, staging and production environments. In this case you could pass in an environment variable to tell your application what environment it’s running in. These are typical use cases for environment variables.
Storing local env variables
You should write your Python code so that it is able to access environment variables from whatever environment it is running in. This could be either your local virtual environment that you’re using for development or a service that you are hosting it on. A useful package that simplifies this process is Python Decouple, this is how you would use it.
First install Python Decouple into your local Python environment.
$ pip install python-decouple
Once installed, create a .env file in the root of your project which you can then open up to add your environment variables.
$ touch .env # create a new .env file $ nano .env # open the .env file in the nano text editor
You can then add your environment variables like this:
USER=alex KEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf
Then save (WriteOut) the file and exit nano. Your environment variables are now stored in your .env file. If you’re using git, remember to add .env to your .gitignore file so that you don’t commit this file of secrets to your code repository.
Now that you have your environment variables stored in a .env file, you can access them in your Python code like this:
from decouple import config API_USERNAME = config('USER') API_KEY = config('KEY')
The benefit of using something like the above approach is that when you deploy your application to a cloud service, you can set your environment variables using whatever method or interface the provider has and your Python code should still be able to access them. Note that it is common convention to use capital letters for names of global constants in your code.
Most cloud service providers will have a CLI or web interface that lets you configure the environment variables for your staging or production environments. For guidance in these cases you ‘ll need to refer to their documentation on how to set environment variables when using their service.
Join the Able Developer Network
If you liked this post you might be interested in the Able developer network, a new place for developers to blog and find jobs.
Environment Variables in Python – Read, Print, Set
Environment variables is the set of key-value pairs for the current user environment. They are generally set by the operating system and the current user-specific configurations. For example, in a Unix environment, the environment variables are set using the user profile i.e. .bash_profile, .bashrc, or .profile files.
Environment Variables in Python
You can think of environment variables as a dictionary, where the key is the environment variable name and the value is the environment variable value.
How to Read Environment Variables in Python
We can use Python os module “environ” property to get the dictionary of all the environment variables. When the os module is loaded by Python interpreter, the environ value is set. Any further changes in the environment variables through external programs will not get reflected in the already running Python program.
Printing all the Environment Variables in Python
The os.environ variable is a dictionary-like object. If we print it, all the environment variables name and values will get printed.
import os # printing environment variables print(os.environ)
If you want to print the environment variables in a better readable way, you can print them in a for loop.
import os for k, v in os.environ.items(): print(f'=')
PATH=/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv/bin:/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home/bin:/Library/PostgreSQL/10/bin:/Users/pankaj/Downloads/mongodb/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/pankaj/Downloads/apache-maven-3.5.3/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin PS1=(venv) MAVEN_OPTS=-Xmx2048m -XX:MaxPermSize=128m VERSIONER_PYTHON_VERSION=2.7 LOGNAME=pankaj XPC_SERVICE_NAME=com.jetbrains.pycharm.40096 PWD=/Users/pankaj/Documents/PycharmProjects/AskPython/hello-world PYCHARM_HOSTED=1 PYTHONPATH=/Users/pankaj/Documents/PycharmProjects/AskPython SHELL=/bin/zsh PAGER=less LSCOLORS=Gxfxcxdxbxegedabagacad PYTHONIOENCODING=UTF-8 OLDPWD=/Applications/PyCharm CE.app/Contents/bin VERSIONER_PYTHON_PREFER_32_BIT=no USER=pankaj ZSH=/Users/pankaj/.oh-my-zsh TMPDIR=/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/ SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.jkodHSyv2v/Listeners VIRTUAL_ENV=/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv XPC_FLAGS=0x0 PYTHONUNBUFFERED=1 M2_HOME=/Users/pankaj/Downloads/apache-maven-3.5.3 __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.wL2naXrbuW/Render LESS=-R LC_CTYPE=UTF-8
Getting Specific Environment Variable Value
Since os.environ is a dictionary object, we can get the specific environment variable value using the key.
import os home_dir =os.environ['HOME'] username = os.environ['USER'] print(f' home directory is ')
Output: pankaj home directory is /Users/pankaj
However, this way to get the environment variable will raise KeyError if the environment variable is not present.
>>> import os >>> env_var = input('Please enter the environment variable name:\n') Please enter the environment variable name: data >>> print(os.environ[env_var]) Traceback (most recent call last): File "", line 1, in File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 678, in __getitem__ raise KeyError(key) from None KeyError: 'data' >>>
A better way to get the environment variable is to use the dictionary get() function. We can also specify the default value if the environment variable is not present.
>>> import os >>> env_var = input('Please enter the environment variable name:\n') Please enter the environment variable name: data >>> print(os.environ.get(env_var)) None >>> print(os.environ.get(env_var, 'CSV')) CSV
How to Check if an Environment Variable Exists?
We can use the “in” operator to check if an environment variable exists or not.
import os env_var = input('Please enter the environment variable name:\n') if env_var in os.environ: print(f' value is ') else: print(f' does not exist')
# Run 1 Please enter the environment variable name: datatype datatype does not exist # Run 2 Please enter the environment variable name: USER USER value is pankaj
How to Set Environment Variable in Python
We can set the environment variable value using the syntax: os.environ[env_var] = env_var_value
import os env_var = input('Please enter environment variable name:\n') env_var_value = input('Please enter environment variable value:\n') os.environ[env_var] = env_var_value print(f'= environment variable has been set.')
Please enter environment variable name: datatype Please enter environment variable value: CSV datatype=CSV environment variable has been set.
If the environment variable already exists, it will be overwritten by the new value. The environment variable will be set only for the current session of the Python interpreter. If you want to change to be permanent, then you will have to edit the user profile file in the Python program.
Conclusion
It’s very easy to work with environment variables in Python. We can read, add, and update environment variables for the current execution.