54

我开始使用来自 Continuum.io 的 Python Anaconda 发行版来scipy工作。
我已经能够让 Anaconda 启动并运行,但我无法判断 Anaconda 是否为它创建的每个新环境PYTHONPATH创建了一个新环境变量,或者它是否依赖于公共系统。 PYTHONPATH

我在文档中找不到这方面的任何信息。

此外,当我执行 a 时printenv,我没有PYTHONPATH在新创建的环境中看到变量——尽管我确实发现了一些新的 anaconda 创建的环境变量。

我能找到的最好的是 Anaconda 将一些 Anaconda 目录和新环境目录添加到PATH变量的头部——但这并不一定将新包与系统环境隔离,但它很接近。

有谁知道这个问题的答案或找到解决这个问题的方法?

4

2 回答 2

38

Anaconda 不使用PYTHONPATH. 但是应该注意,如果PYTHONPATH设置了它,它可以用于加载不在 anaconda 环境中的库。这就是为什么在激活环境之前做一个

unset PYTHONPATH

例如,这个 PYTHONPATH 指向一个不正确的 pandas 库:

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

取消设置PYTHONPATH可以防止加载错误的熊猫库:

unset PYTHONPATH
source activate anaconda-2.7
python
>>>> import pandas as pd
>>>>
于 2015-08-05T19:24:28.793 回答
36

不,对于 Anaconda 环境,唯一需要修改的是 PATH(以便它从环境bin/目录或Scripts\Windows 上获取正确的 Python)。

Anaconda 环境的工作方式是硬链接安装到环境中的所有内容。出于所有意图和目的,这意味着每个环境都是 Python 和所有包的完全独立安装。通过使用硬链接,这可以有效地完成。因此,没有必要弄乱 PYTHONPATH,因为环境中的 Python 二进制文件已经搜索了环境中的站点包,以及环境的 lib 等等。

于 2013-07-01T14:49:53.913 回答