How to Set and List Environmental Variable in Python and Jupyter Notebook

In this short guide, you’ll see how to set environmental variables in Jupyter Notebook and JupyterLab.

Below you can find most popular options:

(1) Jupyter magic commands

%env AWS_KEY=XXX

(2) Setup environment variables

import os
os.environ['AWS_KEY'] = "XXX"

You will see multiple ways to set variables. Which one you are going to use will depend on your case.

Step 1: Set Environmental Variable with Jupyter Magic

Simplest option to set environment variables in Jupyter Notebook and JupyterLab is to use magic functions.

There two types of magic commands:

  • cell magic commands (start with %%)
  • line magic commands (start with %)

To find more about the magic commands check this out: Built-in magic commands

List all Environment Variable

To list all environmental variables in Jupyter Notebook and JupyterLab with magic you can use:

%env

result of this command is a dictionary in the form of:

 'JPY_PARENT_PID': '4217',
 'CLICOLOR': '1',
 'PAGER': 'cat',
 'GIT_PAGER': 'cat',
 'MPLBACKEND': 'module://ipykernel.pylab.backend_inline',
 'AWS_KEY': 'XXX'}

Set new Environmental Variable in Jupyter

Setting new variable or new value for existing environmental variable can be done by command:

%env AWS_KEY=XXX

Note: If you use quotes like:

%env AWS_KEY="XXX"

they will be included in the value:

'MY_VAR': '"MY_VALUE"'}

Step 2: Set Environmental Variable with Jupyter Magic

To set environment variable in Jupyter we can use: os.environ['AWS_KEY']. The difference between this one and the Jupyter magic is the quotes.

Set new Environmental Variable in Jupyter with os.environ

So if you need to use quotes you can use this one. You need to import the os module and use command like:

import os
os.environ['AWS_KEY'] = "XXX"

List Environmental Variables in Jupyter with os.environ

To list all or some environmental variables with os.environ. You can use this syntax:

import os
os.environ

Jupyter set environment variable by python-dotenv

To read .env file with Jupyter Notebook we can use Python library called: python-dotenv.

This library can be instaled by command:

pip install python-dotenv

Now it can be use to read .env files in Python or JupyterLab.

Suppose we have sample .env file:

# .env
MY_VAR=MY_VAL
S3_BUCKET=XXX
S3_SECRET_KEY=XXX

Jupyter environment variables

Reading environment variables from .env file and python-dotenv can be done by:

from dotenv import load_dotenv

# env file is in the same folder
load_dotenv()

Now we can read all variables from this env file by:

import os
print(os.environ.get('MY_VAR'))

returns:

MY_VAL

Load env file another folder

To load .env file stored in another folder we can do:

from dotenv import load_dotenv
from dotenv import load_dotenv

# env file is in the same folder
load_dotenv()

# explicitly provide path to '.env' file
from pathlib import Path 
env_path = Path('.conf/') / '.env'
load_dotenv(dotenv_path=env_path)

Example: Python read .env variables

We can create .env file in JupyterLab in folder /conf/:

API_KEY="xxx"
API_KEY_SECRET="xxx"
BEARER_TOKEN="xxx"
ACCESS_TOKEN="xxx"
ACCESS_TOKEN_SECRET="xxx"

The file won't be visible in JupyterLab or Notebook and you need to edit it from another app or terminal:

nano .env

Now we can read the variables from python by:

from dotenv import load_dotenv, find_dotenv
from pathlib import Path

path='~/conf/.env'
load_dotenv(dotenv_path=path,verbose=True)


consumer_key = os.environ["API_KEY"]
consumer_secret = os.environ["API_KEY_SECRET"]
access_token = os.environ["ACCESS_TOKEN"]
access_token_secret = os.environ["ACCESS_TOKEN_SECRET"]

This would make your Juputer Notebooks more secure and organized. Another tip is to exlude .env files from the git versioning.

Conclusion

We saw several option to set and read environment variable in Jupyter notebook. We covered in details how to work with Jupyter notebook and environmental variables.

If you need to learn more you can refer to: