I followed approach in this thread. I can easily set env variable in jupyter hub using the %env VAR = 5
. However, when I try to print out this variable in the terminal I get only a blank line, as if the variable did not exist at all. Is it somehow possible to be able to print in terminal the env var defined in the notebook?

- 191
- 2
- 19
3 Answers
Setting environment variables from the notebook results in these variables being available only from that notebook.
%env VAR=TEST
import os
print(os.environ["VAR"])
...
>>> TEST
If you want to persist the variable, you need to put it either in the kernel.json
file, or in systemd service file for jupyterhub, or in something like ~/.bashrc
.

- 103
- 1
- 8
JupyterHub has a jupyterhub_config.py
file (e.g. located in /etc/jupyterhub/jupyterhub_config.py
) which can be used to control various aspects of the hub and the notebook environment.
In order to make a specific environment variable available to all notebooks on the hub, add the following lines to it:
c.Spawner.environment = {
'VAR': 'Test'
}
and restart the JupyterHub service (something like sudo service jupyterhub restart
).
P.S. If you would just like to forward an environment variable from the user's environment, there is also
c.Spawner.env_keep = ['VAR']

- 640
- 7
- 19
Following from @leopold.talirz's answer, for those wanting to modify an environment variable without overwriting it (i.e. append a path to the PATH
variable), I found you can do something like the following,
import os
original_path = os.environ['PATH']
c.Spawner.environment = {
'PATH': '/path/to/foo:{}'.format(original_path)
}
NOTE: In my case, I'm working with The Littlest JupyterHub, so I put the above in /opt/tljh/config/jupyterhub_config.d/environment.py
.

- 443
- 7
- 11