繁体   English   中英

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

[英]Should conda, or conda-forge be used for Python environments?

Conda和 conda conda-forge forge 都是 Python package 管理者。 当两个存储库中都存在 package 时,什么是合适的选择? 例如 Django,两者都可以安装,但两者的区别在于几个依赖项(conda-forge 有更多)。 没有对这些差异的解释,甚至没有简单的自述文件。

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

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

长答案:

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

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

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

conda install -c some-channel packagename

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

conda install some-channel::packagename

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

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

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 ,使用conda-forge通道而不是 Anaconda 维护的defaults通道有四个主要原因:

  1. conda-forge软件包可能defaults频道上的软件包更新
  2. conda-forge频道上的某些软件包defaults不可用
  3. 您更愿意使用依赖项,例如openblas (来自openblas conda-forge mkl )而不是mkl (来自defaults )。
  4. 如果要安装一个需要编译库包(如C扩展或围绕一个C库的包装),它可以减少不兼容的,如果你从一个单一的通道安装所有软件包的环境中,由于二进制的机会基础 C 库的兼容性(但此建议可能会过时/将来更改)。

Anaconda 更改了他们的服务条款,以便“重度商业用户”必须付费,其中不包括conda-forge频道。

如果您不想为使用付费,您可能希望坚持使用conda-forge 文档中所述:

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

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

如果您安装了conda并想删除默认频道,您可以使用

conda config --show channels

查看您的频道,并可以使用

conda config --remove channels channel-name

删除频道。

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

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

根据我的经验, conda-forge频道提供了更多的软件包,而且它们也是最新的。 这就是为什么我将它用作我的默认频道,可以这样做

conda config --add channels conda-forge
conda config --set channel_priority strict

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

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

但不是

conda install python-constraint

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM