[英]Does `anaconda` create a separate PYTHONPATH variable for each new environment?
我开始使用Continuum.io的Python Anaconda发行版进行scipy
工作。
我已经能够启动并运行Anaconda,但我不知道Anaconda是否为它创建的每个新环境创建了一个新的PYTHONPATH
环境变量,或者它是否依赖于公共系统PYTHONPATH
。
我在文档中找不到任何相关信息。
此外,当我做了一个printenv
,我没有在新创建的环境中看到PYTHONPATH
变量 - 虽然我确实找到了一些新的anaconda创建的环境变量。
我能找到的最好的是Anaconda将一些Anaconda目录和新的环境目录添加到PATH
变量的头部 - 但这并不一定将新的包与系统环境隔离,但它很接近。
有谁知道这个问题的答案或找到解决这个问题的方法?
不,需要为Anaconda环境修改的唯一内容是PATH(以便它从环境bin/
目录获取正确的Python,或者在Windows上获取Scripts\\
)。
Anaconda环境的工作方式是它们将安装到环境中的所有内容硬链接。 出于所有意图和目的,这意味着每个环境都是完全独立的Python安装和所有包。 通过使用硬链接,可以有效地完成。 因此,不需要混淆PYTHONPATH,因为环境中的Python二进制文件已经搜索了环境中的站点包,以及环境的lib等等。
Anaconda不使用PYTHONPATH
。 但是应该注意,如果设置了PYTHONPATH
,它可以用于加载不在anaconda环境中的库。 这就是为什么在激活环境之前做一个好的做法
unset PYTHONPATH
例如,这个PYTHONPATH指向一个不正确的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
取消设置PYTHONPATH
可防止加载错误的pandas lib:
unset PYTHONPATH
source activate anaconda-2.7
python
>>>> import pandas as pd
>>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.