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

时间:2018-09-23 14:16:17

标签: python-3.x pip conda

我正在使用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

也很长,但与点子列表不同(*请参见下面的后续内容) 通常,点列表是conda列表的子集。至少有一个例外(pip列表中的“ tables”,而不是conda列表中的“ tables”),但我并没有进行太仔细的分析。康达列表会更改/显示一些(所有?)连字符以加下划线(或pip则相反)。还有一些版本不同的实例。

问题2:为什么? (以及后续问题-可以吗?我应该在意吗?)

我希望有一个基线conda“环境”(可能不是正确的词)-即,我已经安装/更新到Ananconda / conda的软件包,然后所有虚拟环境都将从中撤出。如果我需要安装新的东西,它将首先安装到基准中。仅当我需要使用与基准版本不同的软件包版本创建应用程序时(在可预见的将来我不会想到),才需要以不同的方式更新虚拟环境。

问题3:我是否对此思考过多?我正在寻找一致性,并希望理解。

-谢谢。 克雷格

跟进#1:将一些软件包安装到空的conda venv之后,conda列表和pip列表的结果仍然不同,但是pip列表比以前要短得多,但是它是conda列表的子集(它不包含两个我不使用的软件包,所以我不在乎)

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

python my-app.py

它运行起来没有错误只是让它感到有些惊讶。不出所料,当我安装一个软件包(pytest)时,由于缺少依赖项,它无法运行。所以...空不为空。

1 个答案:

答案 0 :(得分:3)

1。 conda listpip list

如果您所做的只是创建环境(conda create -n venv),则其中没有安装任何内容,包括pip。您的操作系统仍将尝试在PATH上解析pip,因此可能也在Anaconda / miniconda安装中找到了基础pip

2。 pip list是env以外conda list的子集

这可能只是安装conda而不是Python软件包的问题,​​pip无法选择安装。我对此不算100,但是让我感到惊讶的是conda是一个更通用的软件包管理器,可以识别更多的软件包。

3。过度思考

我认为这更多是工作流程风格的问题,通常不在SO的范围内,因为它将获得有根据的答案。尝试搜索最佳实践建议,并选择适合您目标的样式。

就我个人而言,我绝不会尝试将所有内容都安装到我的基本/根conda env中,因为安装的次数越多,您对依赖性的要求就越多。最后,conda仍将集中所有软件包(anaconda/pkgsminiconda3/pkgs),因此我将重点放在制作可满足特定目的的模块化环境中。