conda 列表 vs pip 列表在 conda 创建环境中的差异

conda list vs pip list differences in conda created environment

我正在使用 conda 版本 4.5.11、python 3.6.6 和 Windows 10。

我使用 conda 创建了一个虚拟环境

conda create --name venv

当我检查已安装的包时

conda list

它(正如预期的那样)是空的。

但是

pip list

很长。

问题 #1:为什么? - 当我使用

创建虚拟环境时
python -m venv venv

点数列表为空。

当我不在激活的虚拟环境中时,那么

conda list

也很长,但它与 pip 列表不一样(*见下文) 通常,pip 列表是 conda 列表的子集。至少有一个例外('tables' 在 pip 列表中,而不是在 conda 列表中)但我没有分析得太仔细。 conda 列表 changes/displays 一些(全部?)连字符到下划线(或者 pip 做相反的事情)。还有一些版本不同的实例。

问题 #2:为什么? (并跟进问题 - 可以吗?我应该关心吗?)

我希望有一个基线 conda 'environment'(这可能不是正确的词)-ie,我有 installed/updated 的包到 Ananconda/conda 然后是所有虚拟环境会被拉出来。如果我需要安装新的东西,它会首先安装到基线中。只有当我需要使用不同版本的基线包创建应用程序时(我在可预见的未来不会想到),我才需要以不同的方式更新虚拟环境。

问题 #3:我是不是想多了?我正在寻找一致性并希望得到理解。

-- 谢谢。 克雷格

Follow Up #1: 在我空的conda venv安装了一些包后,conda list和pip list的结果还是不一样,但是pip list比原来短了很多,但是是conda的一个子集列表(它不包括两个我不使用的包,所以我不关心)

跟进 #2:在空环境中,我 运行 一些代码

python my-app.py

并且 运行 没有错误,只是有点惊讶。正如预期的那样,当我安装一个包 (pytest) 时,由于缺少依赖项,它无法 运行。所以...空不空。

1. conda list 对比 pip list

如果您所做的只是创建 环境 (conda create -n venv),那么那里没有任何安装,包括 pip。尽管如此,shell 仍然会尝试使用 PATH 环境变量来解决 pip,并且可能会在 Anaconda/Miniconda base 中找到 pip 环境。

2。 pip listconda list 在 env

之外的子集

这可能只是 conda 安装 Python 包以外的东西,pip 没有安装选项。 Conda 是一个更通用的包管理器,并引入了 运行 每个包所需的所有依赖项(例如,共享库)——根据定义,这比 PyPI 提供的范围更广。

3。想多了

我认为这更像是一个工作流风格的问题,通常不在 Whosebug 的范围内,因为它会得到自以为是的答案。尝试四处搜索最佳实践建议并选择适合您目标的风格。

就我个人而言,我永远不会尝试将所有东西都安装到我的 base/root Conda 环境中,因为安装的越多,安装的越多一个具有向不同方向拉动的依赖性要求。最后,Conda 无论如何都会集中所有包(anaconda/pkgsminiconda3/pkgs),所以我专注于制作服务于特定目的的模块化环境。