How to set specific environment variables when activating conda environment?
Does anyone know how to automatically set environment variables when activating an env in conda? I have tried editing */bin/activate, but that adds the new environment variables for every new env that is created. I want to set env variables that are specific to each env.
Solution 1:
Use the files $CONDA_PREFIX/etc/conda/activate.d
and $CONDA_PREFIX/etc/conda/deactivate.d
, where $CONDA_PREFIX
is the path to the environment.
See the section on managing environments in the official documentation for reference.
Solution 2:
Environment Variables as Configuration Settings
Conda v4.8 introduced a new command-line interface in the conda-env
tool for managing environment variables on a per-environment basis. The command is conda env config vars
and here is the help description as of v4.8.3 for the command overall:
$ conda env config vars -h
usage: conda-env config vars [-h] {list,set,unset} ...
Interact with environment variables associated with Conda environments
Options:
positional arguments:
{list,set,unset}
list List environment variables for a conda environment
set Set environment variables for a conda environment
unset Unset environment variables for a conda environment
optional arguments:
-h, --help Show this help message and exit.
examples:
conda env config vars list -n my_env
conda env config vars set MY_VAR=something OTHER_THING=ohhhhya
conda env config vars unset MY_VAR
Perhaps a bit verbose, but it avoids having to manually manage files in etc/conda/(de|)activate.d
.
YAML Specification
Added in Conda v4.9, there is now support for automatic defining of environment-specific variables as part of an environment YAML definition. For example,
name: foo
channels:
- defaults
dependencies:
- python
variables:
MY_VAR: something
OTHER_VAR: ohhhhya
which would set up the environment variables MY_VAR
and OTHER_VAR
to be set and unset on environment activation and deactivation, respectively.