How to use export with Python on Linux
How to use export with Python on Linux
export
is a command that you give directly to the shell (e.g. bash
), to tell it to add or modify one of its environment variables. You cant change your shells environment from a child process (such as Python), its just not possible.
Heres whats happening when you try os.system(export MY_DATA=my_export)
…
/bin/bash process, command `python yourscript.py` forks python subprocess
|_
/usr/bin/python process, command `os.system()` forks /bin/sh subprocess
|_
/bin/sh process, command `export ...` changes its local environment
When the bottom-most /bin/sh
subprocess finishes running your export ...
command, then its discarded, along with the environment that you have just changed.
You actually want to do
import os
os.environ[MY_DATA] = my_export
How to use export with Python on Linux
Another way to do this, if youre in a hurry and dont mind the hacky-aftertaste, is to execute the output of the python script in your bash environment and print out the commands to execute setting the environment in python. Not ideal but it can get the job done in a pinch. Its not very portable across shells, so YMMV.
$(python -c print export MY_DATA=my_export)
(you can also enclose the statement in backticks in some shells “)