为什么我的conda环境会继承所有基础包?

3

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

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

不知怎么的,我在这个环境中可以访问基础环境中安装的所有软件包。 pip list 列出了所有 Python 软件包,我可以在 Python 中 import 这些软件包。 但是,实际环境的“site-packages”文件夹并不像基础文件夹那样包含这些额外的 Python 模块。

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


我在路径中明确指定了 PYTHONPATH/HOME,删除后现在它运行良好。


1
你应该尝试使用 which pip 命令来确保 pip 引用的是正确的版本。 - ToughMind
我尝试了 pip --version 命令,显示我的 pip 版本是 19.2.1,我认为这已经是最新版本了。 - n33
1
如果您正在使用Anaconda,您将在不同的位置安装许多pip,有时“pip”命令可能会引用错误的“pip”,其位置不在您实际所在的虚拟环境中,因此包不正确。因此,“which pip”将让您知道pip的位置。这与版本无关。 - ToughMind
@ToughMind我尝试了where pip,我认为这相当于Windows中的which,它返回环境中的pip.ext和基础中的pip.exe。这是否表示错误,如何修复? - n33
2个回答

1

听起来很傻,但确保您实际上正在激活新环境。还要确保检查 which pythonwhich pip 是否指向新环境,因为我以前遇到过tmux使conda激活无声失败的问题。


1
这是一个很好的检查点:需要澄清的是,在conda中,创建环境并不会自动激活它。您必须显式地激活它。 - Everett
我也怀疑环境是否已经激活,但命令提示符中有(env_name)前缀,并且which未被识别。 - n33
(env_name)前缀是否与您创建的新环境名称相同?您说它未被识别,您是在Windows上吗?也许您可以尝试使用where pipwhere python - sgillen
@sgillen。环境名称是正确的。我尝试了 where pip,它返回了环境中的pip.exe和基础环境中的pip.exe。这是否表明存在错误,如何修复? - n33
我认为问题在于Windows看到了基础的pip并使用它,而不是环境中的pip。如果没有更多关于conda版本、安装方式以及激活环境的信息,我们很难回答为什么会发生这种情况。 - sgillen
我认为重新安装Anaconda应该可以解决这个问题,我会尝试一下。无论如何,还是谢谢你。 - n33

1
我也会检查您的PYTHONPATH变量。

echo $PYTHONPATH

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


echo %PYTHONPATH% 返回 C:\Users\myname\Anaconda3\Lib - n33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接