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

til*_*oom 97 python anaconda conda

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

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

dar*_*ith 165

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

答案很长:

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

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

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

conda install -c some-channel packagename
Run Code Online (Sandbox Code Playgroud)

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

conda config --add channels some-channel
Run Code Online (Sandbox Code Playgroud)

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

conda config --append channels some-channel
Run Code Online (Sandbox Code Playgroud)

如果您想删除添加的频道,可以通过写信来删除

conda config --remove channels some-channel
Run Code Online (Sandbox Code Playgroud)

看到

conda config -h
Run Code Online (Sandbox Code Playgroud)

了解更多选择.

尽管如此,使用conda-forge频道而不是defaultsAnaconda维护的频道有四个主要原因:

  1. 打包conda-forge 可能defaults通道上的打包更新
  2. conda-forge通道上有些包不可用defaults
  3. 您更喜欢使用依赖项,例如openblas(from conda-forge)而不是mkl(from defaults).
  4. 如果要安装需要编译库的程序包(例如,C扩展或C库周围的包装),如果由于二进制文件从单个通道安装环境中的所有程序包,则可能会降低不兼容的可能性基本C库的兼容性(但此建议可能过时/将来更改).

  • 谢谢!我有两个相关的问题:1. 我怎样才能找出哪个频道是好的尝试;2. 我在一个通道上配置后,如何将其重置为默认值? (2认同)
  • `mkl` 不是比 `openblas` 快吗? (2认同)
  • @endolith也许,但是1)可能仅在Intel处理器上和2)它不是开源的 (2认同)

adr*_*rin 17

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

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

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>
Run Code Online (Sandbox Code Playgroud)

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

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

conda config --show channels
Run Code Online (Sandbox Code Playgroud)

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

conda config --remove channels channel-name
Run Code Online (Sandbox Code Playgroud)

删除频道。

  • pwang99(我相信现任 Anaconda 首席执行官)在 Reddit 上确认 miniconda 是 Anaconda 的免费替代品:https://www.reddit.com/r/Python/comments/lvr85n/i_want_to_use_python_commercially_for_free_is/gqiae2i?utm_source=share&amp;utm_medium=web2x&amp;context= 3 (2认同)

Ash*_*ran 5

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

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