问题:是否应将conda或conda-forge用于Python环境?
Conda
并且conda-forge
都是Python软件包管理器。当两个存储库中都存在一个程序包时,合适的选择是什么?例如,Django可以安装其中之一,但是两者之间的区别是几个依赖项(conda-forge还有更多)。对于这些差异没有任何解释,甚至没有简单的自述文件。
应该使用哪一个?康达或康达伪造?有关系吗?
回答 0
简短的回答是,根据我的经验,通常使用哪种都无关紧要。
长答案:
所以conda-forge
是可以从其中安装的软件包的附加通道。从这个意义上讲,它没有比默认频道更特别,也没有其他任何人将软件包发布到的频道(数千个)中的任何一个。如果您在https://anaconda.org上注册并上传自己的Conda软件包,则可以添加自己的频道。
在这里,我们需要进行区分,我认为您对问题的措辞不清楚conda
,即跨平台的程序包管理器和conda-forge
程序包通道之间。该conda
软件的主要开发人员Anaconda Inc.(以前称为Continuum IO)也维护一个单独的软件包频道,这是您在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
频道而不是defaults
Anaconda维护频道的主要原因有四个:
- 上的软件包
conda-forge
可能比defaults
频道上的软件包最新 conda-forge
频道上的某些软件包无法从defaults
- 您可能希望使用诸如
openblas
(fromconda-forge
)而不是mkl
(fromdefaults
)的依赖项。 - 如果要安装需要编译库的软件包(例如,C扩展名或C库的包装器),则由于二进制原因,如果从单个通道在环境中安装所有软件包,则可能会减少不兼容的可能性。基本C库的兼容性(但是此建议可能会过时/将来会更改)。
回答 1
Anaconda更改了服务条款,以使“大量商业用户”需要付费,其中不包括conda-forge
渠道。
conda-forge
如果您不想为使用付费,则可能要坚持。如文档所述:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>
你也可以使用miniforge具有conda-forge
作为默认的通道,并支持ppc64le和aarch64平台,以及其他常用的。
回答 2
在conda-forge渠道中,您可以找到针对conda构建的软件包,但尚未成为Anaconda官方发行版的一部分。
通常,您可以使用其中任何一个。
回答 3
有些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