我正在使用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)时,由于缺少依赖项,它无法运行。所以...空不为空。
答案 0 :(得分:3)
1。 conda list
与pip 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/pkgs
或miniconda3/pkgs
),因此我将重点放在制作可满足特定目的的模块化环境中。