In my project I use the built-in python virtual env (python -m venv).
To set environment variables I add multiple export VAR1=VALUE1 to the end of the venv/bin/activate.
Obviously, when I delete the venv and create a new one, for example with the new python version all my env variables get lost.
So, is there a way to preserve them? May be it is possible to define env variables when creating the venv?
-
1if you delete a file, but you want a backup, you could copy it. Or just use a text editor to copy the lines that export variable names, and put that in a different script. You're going to have to edit the new activate script, regardless.Kenny Ostrom– Kenny Ostrom2020-05-25 16:30:50 +00:00Commented May 25, 2020 at 16:30
Add a comment
|
2 Answers
instead of adding to activate
export VAR1=VALUE1
consider writing them into their own file:
~/setupenv.sh:
export VAR1=VALUE1
and add the following to activate
source ~/setupenv.sh
However, personally, I would not do that. I would instead define a bash function to do it:
myownactivate(){
source <path_to_activate>
export VAR1=VALUE1
}
Comments
Use dotenv
Essentially, you have to create a simple .env file that containsyour variables and values and it will load them when you run your application.
You can access them by os.getenv('VAR1')
3 Comments
VPfB
I would give the same advice for dotenv. But it is not complete without stating, that the application itself is then responsible for loading the env file. That is not exactly what was asked by the OP.
phd
@VPfB
. .env should be added to the end of the venv/bin/activatesagar1025
I haven't tried this, but if you add
export VAR1=VALUE1 at the end of $HOME/.bashrc, can you still access the environment variable by calling os.getenv() ?