I am starting to work with the Python Anaconda distribution from Continuum.io to do scipy
work.
I have been able to get Anaconda up and running, but I cannot tell whether Anaconda creates a new PYTHONPATH
environment variable for each new environment it creates, or whether it relies on the common system PYTHONPATH
.
I could not find any information on this in the documentation.
Further, when I did a printenv
, I did not see a PYTHONPATH
variable in the newly created environment --though I did find a few new anaconda created environment variables.
The best I can find is that Anaconda added some Anaconda directories and the new environment directory to the head of PATH
variable --but this does not necessarily isolate the new package from the system environment but it is close.
Does anyone know the answer to this question or found a way to deal with this concern?
Making Anaconda Python Find Your Python Scripts - Modifying the PYTHONPATH. (The following information applies only to Anaconda installations. The basic idea applies to any python installation, but the precise ways of addressing the issue are different.)
So, the only reason to use PYTHONPATH variables is to maintain directories of custom Python libraries that are not installed in the site packages directory (the global default location). In simple terms, it is used by user-defined modules to set the path so that they can be directly imported into a Python program.
Anaconda does not use the PYTHONPATH
. One should however note that if the PYTHONPATH
is set it could be used to load a library that is not in the anaconda environment. That is why before activating an environment it might be good to do a
unset PYTHONPATH
For instance this PYTHONPATH points to an incorrect pandas lib:
export PYTHONPATH=/home/john/share/usr/anaconda/lib/python source activate anaconda-2.7 python >>>> import pandas as pd /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/__init__.py", line 6, in <module> from . import hashtable, tslib, lib ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8
unsetting the PYTHONPATH
prevents the wrong pandas lib from being loaded:
unset PYTHONPATH source activate anaconda-2.7 python >>>> import pandas as pd >>>>
No, the only thing that needs to be modified for an Anaconda environment is the PATH (so that it gets the right Python from the environment bin/
directory, or Scripts\
on Windows).
The way Anaconda environments work is that they hard link everything that is installed into the environment. For all intents and purposes, this means that each environment is a completely separate installation of Python and all the packages. By using hard links, this is done efficiently. Thus, there's no need to mess with PYTHONPATH because the Python binary in the environment already searches the site-packages in the environment, and the lib of the environment, and so on.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With