python-3.x - conda 创建环境中的 conda list vs pip list 差异
问题描述
我正在使用 conda 版本 4.5.11、python 3.6.6 和 Windows 10。
我使用 conda 创建了一个虚拟环境
conda create --name venv
当我检查已安装的软件包时
conda list
它(如预期的那样)是空的。
但
pip list
很长。
问题一:为什么?- 当我使用创建虚拟环境时
python -m venv venv
点列表为空。
当我不在激活的虚拟环境中时,然后
conda list
也很长,但它与 pip 列表不同(* 请参阅下面的后续内容)通常,pip 列表是 conda 列表的子集。至少有一个例外(点列表中的“表”,而不是 conda 列表中的),但我没有仔细分析。conda 列表将一些(全部?)连字符更改/显示为下划线(或 pip 反过来)。还有一些版本不同的实例。
问题2:为什么?(以及后续问题——可以吗?我应该关心吗?)
我希望有一个基线 conda '环境'(这可能不是正确的词) - 即,我已经安装/更新到 Ananconda/conda 的软件包,然后所有虚拟环境都将从中提取。如果我需要安装新的东西,它会首先安装到基线中。只有当我需要使用来自基线的不同版本的包创建应用程序时(在可预见的将来我不会想到),我才需要以不同的方式更新虚拟环境。
问题3:我想太多了吗?我正在寻找一致性并希望得到理解。
- 谢谢。克雷格
跟进#1:将一些包安装到我的空conda venv后,conda list和pip list的结果仍然不同,但是pip list比以前短了很多,但是是conda list的一个子集(它不是包括两个我不使用的包,所以我不在乎)
跟进#2:在空的环境中,我运行了一些代码
python my-app.py
并且对它没有错误地运行感到有点惊讶。正如预期的那样,当我安装一个包(pytest)时,由于缺少依赖项,它无法运行。所以……空不空。
解决方案
1.conda list
对比pip list
如果您所做的只是创建环境 ( conda create -n venv
),那么其中没有安装任何东西,包括pip
. 尽管如此,shell 仍然会尝试pip
使用 PATH 环境变量来解决问题,并且可能会pip
在 Anaconda/Miniconda基础环境中找到它。
2.pip list
是conda list
外部环境的子集
这可能只是conda
安装 Python 包以外的东西的问题,它pip
没有安装选项。Conda 是一个更通用的包管理器,它引入了运行每个包所需的所有依赖项(例如,共享库)——根据定义,这比 PyPI 提供的范围更广。
3. 想太多
我认为这更像是一个工作流风格的问题,而且通常超出了 StackOverflow 的范围,因为它会得到固执己见的答案。尝试四处搜索最佳实践建议并选择适合您目标的风格。
就个人而言,我永远不会尝试将所有东西都安装到我的基本/根Conda 环境中,因为安装的越多,就越有不同方向的依赖需求。最后,无论如何,Conda 将集中所有包(anaconda/pkgs
或miniconda3/pkgs
),因此我专注于制作用于特定目的的模块化环境。
推荐阅读
- r - R 在 Linux 上自动执行脚本
- reactjs - TS2322:输入“承诺”
' 不可分配给类型 'string' - azure-logic-apps - Azure 逻辑应用在单行中全部输出 XML
- java - 如何使用 Fortify SCA 找到父 pom.xml 位置扫描项目?
- css - 我是否需要使用实时 SASS 编译器在我的 react.js 项目中编译我的 SCSS 文件?还是 React.js 对我来说是开箱即用的?
- android - 如何在应用程序中仅使用灯光模式?安卓工作室
- sql - 基于字段名称上的数字的 SQL 条件
- docker - docker-compose.yml 文件结构和名称
- java - 为什么我在使用超时选项值(50 秒)小于 redis 命令超时(200 秒)设置的 brpop 命令时出现 redis 命令超时?
- javascript - 无法从 window.returnvalue 读取值