当前位置: 首页 > 知识库问答 >
问题:

康达创建环境中康达列表与pip列表的差异

濮阳赞
2023-03-14

我使用的是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列表的一个子集。至少有一个例外(“表”在pip列表中,而不是在conda列表中),但我还没有进行过详细分析。conda列表更改/显示部分(全部?)连字符到下划线(或pip则相反)。还有一些版本不同的实例。

问题2:为什么?(以及后续问题-他们会吗?我应该关心吗?)

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

问题3:我想得太多了吗?我在寻求一致性,并希望得到理解。

-谢谢。克雷格(m.)

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

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

python my-app.py

只是稍微惊讶于它没有错误。不出所料,当我安装软件包(pytest)时,由于缺少依赖项,它无法运行。所以。。。空不是空的。

共有1个答案

隗俊誉
2023-03-14

1.< code>conda列表与< code>pip列表

如果您所做的只是创建环境(condacreate-nvenv),那么其中没有安装任何东西,包括pip。尽管如此,shell仍将尝试使用PATH环境变量解析<code>pip

2.< code>pip列表是env外部< code>conda列表的子集

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

3.过度思考

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

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

 类似资料:
  • 问题内容: 在Anaconda存储库中,有两种安装程序: “ Anaconda安装程序 ”和“ Miniconda安装程序 ”。 他们有什么区别? 此外,对于安装程序文件,,这是什么立场? 问题答案: 区别在于miniconda只是在交付存储库管理系统。因此,当您安装它时,只有管理系统没有软件包。而对于Anaconda,它就像带有某些内置软件包的发行版。 与任何Linux发行版一样,有些发行版捆绑

  • 我有一个带有Person对象的数据库表。我的网络服务接收一个Person对象列表来更新这个Person表。我的应用程序现在包含两个列表: 我想遍历这些列表,并创建一个新列表,用于更新Person表。 fName和lName用于识别现有记录。下面是一个例子。 现在的 乔,布洛格斯,18岁,joe@me.com 简,布洛格斯,21岁,jane@me.com 弗洛,布洛格斯,25岁,flo@me.com

  • 我正在通过conda安装pymc,它告诉我更新一些文件,所以没有问题。然而,在更新后,它给出了一个OSError,现在,我不能访问任何conda构建命令。现在,当我键入任何conda命令时,它会给我

  • 对于C#中泛型列表的泛型列表的概念,我似乎有点难以理解。我认为问题源于

  • 问题内容: 什么时候应该使用生成器表达式,什么时候应该在中使用列表推导? 问题答案: John的答案很好(当你要迭代多次时,列表理解会更好)。但是,还应注意,如果要使用任何列表方法,都应使用列表。例如,以下代码将不起作用: 基本上,如果你要做的只是迭代一次,则使用生成器表达式。如果你要存储和使用生成的结果,那么列表理解可能会更好。 由于性能是选择彼此的最常见原因,所以我的建议是不要担心它,而只选择

  • 有人能告诉我以下示例中的和运算符之间的区别吗: