小编典典

是否应该将 conda 或 conda-forge 用于 Python 环境?

all

Conda并且conda-forge都是 Python 包管理器。当两个存储库中都存在一个包时,什么是合适的选择?例如,Django
可以安装其中任何一个,但两者之间的区别在于几个依赖项(conda-forge 有更多)。没有对这些差异的解释,甚至没有一个简单的 README。

应该使用哪一个?康达还是康达锻造?有关系吗?


阅读 93

收藏
2022-07-09

共1个答案

小编典典

简短的回答是,根据我的一般经验,你使用哪个并不重要。

长答案:

conda- forge可以从中安装软件包的附加渠道也是如此。从这个意义上说,它并不比默认频道或人们发布包裹的其他数百个(数千个?)频道中的任何一个更特别。如果您在https://anaconda.org注册并上传您自己的
Conda 包,则可以添加自己的频道。

conda在这里,我们需要区分跨平台包管理器和conda-forge包通道之间的区别,我认为您在问题中的措辞并不清楚。该软件的主要开发商
Anaconda Inc.(前身为 Continuum
IO)也维护一个单独的包通道,这是您在不更改任何选项conda的情况下键入时的默认设置。conda install packagename

可以通过三种方式更改频道选项。前两个在您每次安装软件包时完成,最后一个是持久的。第一个是每次安装包时指定一个频道:

conda install -c some-channel packagename

当然,该包必须存在于该频道上。这种方式将安装packagename及其所有依赖项来自some-channel. 或者,您可以指定:

conda install some-channel::packagename

该包仍然必须存在于 上some-channel,但现在,只会packagename从 中拉出some- channel。将从您的默认频道列表中搜索满足依赖关系所需的任何其他包。

要查看您的频道配置,您可以编写:

conda config --show channels

您可以控制搜索频道的顺序conda config。你可以写:

conda config --add channels some-channel

将频道添加到配置列表some-channel的顶部。channels这给出some- channel了最高优先级。优先级确定(部分)当多个频道具有特定包时选择哪个频道。要将频道添加到列表末尾并为其赋予最低优先级,请键入

conda config --append channels some-channel

如果你想删除你添加的频道,你可以写

conda config --remove channels some-channel

conda config -h

更多选择。

conda-forge综上所述,使用通道而不是defaultsAnaconda 维护的通道有四个主要原因:

  1. 上的包conda-forge 可能defaults频道上的包更新
  2. 频道上有一些套餐conda-forge无法从defaults
  3. 您更愿意使用openblas(from conda-forge) 而不是mkl(from defaults) 之类的依赖项。
  4. 如果您正在安装一个需要编译库的包(例如,C 扩展或 C 库的包装器),如果您将所有包安装在一个环境中,由于二进制文件,它 可能会 减少不兼容的机会基本 C 库的兼容性(但此建议将来可能会过时/更改)。如需参考,请参阅Conda Forge 关于混合通道的帖子
2022-07-09