【问题标题】:Why my conda environment inherits all base packages?为什么我的 conda 环境会继承所有基础包?
【发布时间】:2019-12-08 10:25:51
【问题描述】:

我正在尝试使用 conda 创建一个“干净”的 Python 虚拟环境:

conda create -n somename python=3.7 --no-default-packages

但不知何故,我可以访问此环境中安装在 base 中的所有软件包。 pip list 返回所有 Python 包,我可以 import Python 中的那些包。 但是,实际环境的“site-packages”文件夹不像基本文件夹那样包含那些额外的 Python 模块。

那么我应该怎么做才能创建一个独立/独立的虚拟环境呢?我正在使用 Windows10。


我在路径中明确指定了 PYTHONPATH/HOME,现在删除后效果很好。

【问题讨论】:

  • 您应该尝试which pip 以确保 pip 指的是正确的版本。
  • 我试过pip --version,显示我的点数是19.2.1,我认为这是最新的。
  • 如果你使用anacomda,你会在不同的位置安装很多pip,有时pip comand 可能会引用一个错误的pip,它的位置不在你实际所在的虚拟环境中,因此包装不正确。所以which pip 会让你知道点的位置。与版本无关。
  • @ToughMindI 尝试了where pip,我认为它在 Windows 中是等效的which,它返回环境中的 pip.ext 和基础中的 pip.exe。这是否表示错误以及如何修复?

标签: python anaconda virtualenv conda


【解决方案1】:

这听起来很傻,但请确保您实际上是在激活新环境。还要确保检查 which pythonwhich pip 是否引用了新环境,在 tmux 使 conda 激活静默失败之前,我遇到了问题。

【讨论】:

  • 这是一件很好的检查:澄清一下,在 conda 中,创建环境不会激活它。您必须明确激活它。
  • 我也怀疑环境是否激活,但是命令提示符中有(env_name)前缀,无法识别which
  • 是否(env_name)前缀与你创建的新环境的名称相同。你说哪个不被识别,你是在windows上吗?也许你可以试试where pipwhere python
  • @sgillen. 环境名称是正确的。我试过where pip,它返回环境中的 pip.exe 和基础中的 pip.exe。这是否表示错误以及如何修复?
  • 好吧,我认为问题在于 Windows 看到了基础 pip 并使用它而不是环境 pip。如果没有有关 conda 版本以及您安装它和激活环境的方式的更多信息,我们将很难回答为什么会发生这种情况。
【解决方案2】:

我还会检查您的 PYTHONPATH 变量

echo $PYTHONPATH

以防万一您继承 dist-packages(检查您的 ~/.profile 和 ~/.bashrc)

【讨论】:

  • echo %PYTHONPATH% 返回 C:\Users\myname\Anaconda3\Lib
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2019-07-08
  • 2019-04-12
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多