为什么 Anaconda 将我的默认 Python 路径添加到特定环境的路径中?

LLa*_*LaP 5 python python-2.7 anaconda

我已经创建了一个 anaconda 环境。当我激活环境时,我可以看到环境使用的 Python 版本与我的默认 Python 版本不同。这是对的。但是,当我在激活的环境中检查 python 路径时。

import sys
from pprint import pprint
pprint(sys.path)
Run Code Online (Sandbox Code Playgroud)

我可以看到前 4 项指向默认的 Python 安装。

['', 'C:\\Python27\\Lib\\site-packages\\distribute-0.6.35-py2.7.egg', 'C:\\Python27\\Lib\\site-packages\\ipython-1.0.0-py2.7.egg', 'C:\\Python27\\Lib\\site-packages', 'C:\\Python27\\Lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\python27.zip', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\DLLs', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\plat-win', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\lib-tk', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\PIL', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\Sphinx-1.2.3-py2.7.eg g', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\win32', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\win32\\lib', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\Pythonwin', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\runipy-0.1.1-py2.7.eg g', 'C:\\Users\\sennn\\AppData\\Local\\Continuum\\Anaconda32\\envs\\apiapi\\lib\\site-packages\\setuptools-5.8-py2.7. egg']
Run Code Online (Sandbox Code Playgroud)

这会导致导入某些库的错误版本的问题。

为什么这些默认目录已添加到路径中?这是创建新 Anaconda 环境时的默认行为吗?有没有办法覆盖它?

asm*_*rer 5

检查您是否有环境变量PYTHONPATHPYTHONHOME设置。conda info -a还将向您显示可能导致此类事情发生的所有相关环境变量。

  • 设置“PYTHONPATH”是问题的原因。它可能是系统范围的环境变量。我建议取消它,因为它会导致 Anaconda Python 和任何 conda 环境拾取这些 Python 模块。谷歌如何在 Windows 中取消设置环境变量(根据您使用的 Windows 版本,该过程略有不同)。 (2认同)
  • 你的标准 Python 仍然应该指向它自己。每个 Python 安装,无论是标准 Python 安装还是 conda 环境,都会自动在其 sys.path 中包含自己的站点包。仅当您想要向 sys.path 添加与标准位置不同的位置时才需要 PYTHONPATH。Anaconda 不会被更改为忽略该变量,因为它有合法的用例。 (2认同)