conda或conda-forge应该用于Python环境吗?

时间:2016-10-04 16:19:58

标签: python anaconda conda

Condaconda-forge都是Python包管理器。当两个存储库中都存在包时,适当的选择是什么?例如,Django可以安装任何一个,但两者之间的差异是几个依赖(conda-forge有更多)。这些差异没有解释,甚至没有简单的自述文件。

应该使用哪一个? Conda还是conda-forge?这有关系吗?

4 个答案:

答案 0 :(得分:129)

简短的回答是,根据我的经验,一般来说,使用哪个都无关紧要。

答案很长:

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

我们需要在conda,跨平台软件包管理器和conda-forge之间进行区分,我认为您在问题中的措辞并不明确。渠道。 Anaconda Inc.(以前称为Continuum IO)是conda软件的主要开发人员,它还维护一个单独的软件包通道,当您在不更改任何选项的情况下键入conda install packagename时,这是默认软件包。

有两种方法可以更改频道的选项。一种是每次安装软件包时指定一个通道:

conda install -c some-channel packagename

当然,包必须存在于该频道上。如果您经常使用相同的频道,则可能需要将其添加到配置中。你可以写

conda config --add channels some-channel

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

conda config --append channels some-channel

如果您要删除添加的频道,可以写

conda config --remove channels some-channel

conda config -h

了解更多选择。

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

  1. conda-forge 上的软件包可能defaults渠道上的软件更新
  2. conda-forge频道上有defaults
  3. 无法提供的资讯包
  4. 您更愿意使用openblas(来自conda-forge)而非mkl(来自defaults)之类的依赖项。
  5. 如果要安装需要编译库的软件包(例如,C扩展或C库周围的包装),如果安装所有软件包,可能 可以减少不兼容的可能性由于基本C库的二进制兼容性,在单一通道的环境中(但此建议可能已过期/将来更改)。

答案 1 :(得分:9)

Anaconda已更改其Terms of Service,以便“大量商业用户”需要付费,而其中不包括conda-forge频道。

如果您不想为使用付费,则可能要坚持使用conda-forge。如docs中所述:

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>

您还可以使用miniforge作为默认频道,conda-forge作为默认频道,并支持ppc64le和aarch64平台以及其他常用的平台。

答案 2 :(得分:0)

有些Python库无法使用简单的conda install安装,因为除非应用conda-forge,否则它们的通道不可用。根据我的经验,与conda相比,pip更通用于研究不同的渠道来源。 例如,如果您要安装python-constraint,则可以通过pip install进行安装,但可以通过** cond **进行安装。您必须指定频道-conda-forge

conda install -c conda-forge python-constraint // works

但不是

conda install python-constraint

答案 3 :(得分:0)

在conda-forge渠道中,您可以找到专为conda构建的软件包,但尚未成为Anaconda官方发行版的一部分。

通常,您可以使用其中任何一个。