首页 文章

conda list vs pip list conda创建环境中的差异

提问于
浏览
1

我使用的是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列表的一个子集 . 至少有一个例外(点子列表中的'表',而不是conda列表中),但我没有过分分析 . conda列表更改/显示一些(所有?)连字符到下划线(或pip反向) . 还有一些版本不同的实例 .

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

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

问题3:我是否过度思考这个?我正在寻找一致性并希望了解 .

  • 谢谢 . 克雷格

跟进#1:在我的空conda venv中安装了一些软件包之后,conda list和pip list的结果仍然不同,但是pip列表比它更短,但它是conda列表的一个子集(它不是包括我不使用的两个包,所以我不在乎)

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

python my-app.py

它只是轻微地感到惊讶,它运行没有错误 . 正如所料,当我安装一个软件包(pytest)时,由于缺少依赖项而无法运行 . 所以......空虚不是空的 .

1 回答

  • 2

    1. conda list vs pip list

    如果您所做的只是创建环境( conda create -n venv ),那么就不会安装任何内容,包括 pip . 你的操作系统仍然会尝试解决你的PATH上的 pip ,因此很可能在Anaconda / miniconda安装中找到了基础 pip .

    2. pip list is subset of conda list outside env

    这可能仅仅是 conda 安装除了Python软件包以外的其他东西, pip 并不是100,但是对我而言, conda ,这是一个更通用的软件包管理器,可以识别更多的软件包,这一点也不奇怪 .

    3. Overthinking

    我认为这更像是一个工作流风格的问题,而且通常超出了SO的范围,因为它会得到自以为是的答案 . 尝试搜索最佳实践建议并选择适合您目标的样式 .

    就个人而言,我永远不会尝试将所有内容安装到我的base / root conda env中,因为安装的越多,您在不同方向上的依赖性要求就越多 . 最后,conda将集中所有包( anaconda/pkgsminiconda3/pkgs ),因此我专注于制作用于特定目的的模块化env .

相关问题