Anaconda: Permanently include external packages (like in PYTHONPATH)
Solution 1:
I found two answers to my question in the Anaconda forum:
1.) Put the modules into into site-packages, i.e. the directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages
which is always on sys.path
. This should also work by creating a symbolic link.
2.) Add a .pth
file to the directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages
. This can be named anything (it just must end with .pth
). A .pth
file is just a newline-separated listing of the full path-names of directories that will be added to your path on Python startup.
Alternatively, if you only want to link to a particular conda environment then add the .pth file to ~/anaconda3/envs/{NAME_OF_ENVIRONMENT}/lib/pythonX.X/site-packages/
Both work straightforward and I went for the second option as it is more flexible.
*** UPDATE:
3.) Use conda develop i. e. conda-develop /path/to/module/
to add the module which creates a .pth
file as described under option 2.).
4.) Create a setup.py in the folder of your package and install it using pip install -e /path/to/package
which is the cleanest option from my point of view because you can also see all installations using pip list
. Note that the option -e
allows to edit the package code. See here for more information.
Thanks anyway!
Solution 2:
I'm able to include local modules using the following:
conda-develop /path/to/module/
I hope it helps.
Solution 3:
The way I do this, which I believe is the most native to conda
, is by creating env_vars.sh
files in my environment, as per the official documentation here.
For macOS and Linux users, the steps are as follows:
-
Go to your environment folder (e.g.
/miniconda1/env/env_name
).$CONDA_PREFIX
is the environemnt variable for your environment path.cd $CONDA_PREFIX
-
Create the
activate.d
anddeactivate.d
directories.mkdir -p ./etc/conda/activate.d mkdir -p ./etc/conda/deactivate.d
-
Inside the each respective directory, create one
env_vars.sh
file. The one in theactivate.d
directory will set (orexport
) your environment variables when youconda activate
your environment. The file in thedeactivate.d
directory will serve to unset the environment variables when youconda deactivate
your environment.touch ./etc/conda/activate.d/env_vars.sh touch ./etc/conda/deactivate.d/env_vars.sh
-
First edit the
$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
toexport
the desired environment variables.#!/bin/sh export VAR_A='some-thing-here' export VAR_B=/path/to/my/file/
-
Afterwards, open to edit the
$CONDA_PREFIX/etc/conda/deactivate/env_vars.sh
, in order tounset
the env variables when youconda deactivate
like so:#!/bin/sh unset VAR_A unset VAR_B
Again, the source of my description comes straight from the conda
docs here.