miniconda 和 miniforge 有啥区别?
Posted
技术标签:
【中文标题】miniconda 和 miniforge 有啥区别?【英文标题】:What is the difference between miniconda and miniforge?miniconda 和 miniforge 有什么区别? 【发布时间】:2020-03-04 18:38:11 【问题描述】:miniforge 安装程序是一个相对较新的、由社区主导的最小 conda 安装程序(正如它在自述文件中所说)“可以直接与 Miniconda 进行比较,并添加了 conda-forge 是默认通道的附加功能” .
目前还不清楚 miniforge 和 Miniconda 之间有什么不同,或者 miniforge 用例是什么。
如果 miniforge 与 Miniconda 相同,只是它默认使用 conda-forge
频道,为什么要创建一个完全不同的安装程序 - 为什么不直接使用 miniconda 并添加 conda-forge
作为在 ~/.condarc
中使用的第一个频道?
如果 miniforge 和 Miniconda 不同,那么两者有什么不同?
【问题讨论】:
在我看来,更相关的区别和主要用例是默认分发一个 conda-forge 编译的 Python。作为副作用,它为您节省了conda config --add channels conda-forge; conda update --all
的步骤,将安装的 Python 切换为 conda-forge 编译的 Python。
miniforge 还拥有 (micro) mamba,它可以更快地解析软件包(conda-forge 需要这个,因为它们的 repo 比 anaconda 的 repo 大得多)作为用户,您当然可以总是从miniforge,但是在 CI 中这很烦人,这就是为什么 miniforge 是由 miniforge CI 启动的。
非常感谢您的澄清 - 这太棒了
【参考方案1】:
miniforge 是社区 (conda-forge) 驱动的简约 conda
安装程序。因此,后续的软件包安装来自conda-forge
频道。
miniconda 是 Anaconda(公司)驱动的简约 conda
安装程序。随后的软件包安装来自anaconda
频道(默认或其他)。
miniforge 几个月前就开始了,因为miniconda
不支持 aarch64,很快“PyPy”人就加入了,同时还有适用于所有 Linux 架构的miniforge
版本,如以及 MacOS。
很快也会有一个 windows 变体(希望 CPython 和 PyPy 也一样)
我猜想 ARMv7(32 位 ARM)变体也即将出现(Raspbian)
【讨论】:
此时,有什么区别:1.Miniconda3-latest-MacOSX-arm64.sh
,根据其描述:Miniconda3 macOS Apple M1 64-bit bash是一个M1(Apple Silicon, arm64) 兼容版本的 miniconda,以及 2. Miniforge3-MacOSX-arm64.sh
,根据其描述:OS X | arm64 (Apple Silicon) 也是一个 Apple Silicon、arm64 (M1) 兼容的 miniconda 版本。据我所知,miniforge 的不同之处在于仅启用了 conda-forge 通道。【参考方案2】:
许可证。自 2020 年 9 月 30 日 Anaconda 服务条款更新起,对主要 conda 频道(托管在 repo.anaconda.org)的访问受到限制:https://www.anaconda.com/terms-of-service
虽然 conda 和 miniconda 安装程序都是在 BSD 3 条款许可下发布的,但如果您在未删除主通道的情况下实际使用已安装的 conda 客户端,您将违反 Anaconda 的 ToS。 miniforge 安装程序完全避免了这种情况,这对于希望使用 conda 的大型组织特别感兴趣。
【讨论】:
快速浏览 ToS 并没有向我揭示问题,但确实:“我们未授予您将存储库用于商业活动的权限”。。跨度> ...虽然对于“由总共少于 200 名员工的相互共同控制的实体使用” 似乎没问题。另见anaconda.com/blog/anaconda-commercial-edition-faq【参考方案3】:简短的回答:miniforge 安装的 conda 与 Miniconda 安装的 conda 相同,只是它使用 conda-forge
频道(并且只有 conda-forge
频道)作为默认频道。
这可以通过查看 miniforge 存储库用于构建 miniforge 安装程序的两个文件来推断:
scripts/build.sh
,它使用 conda 包 constructor 创建新的 conda 安装程序
Miniforge3/construct.yaml
,一个 yaml 文件,用于指定 construtor
正在构建的 conda 安装程序的最终 conda 环境应该是什么样子
查看construct.yaml
,它将conda-forge
设置为only 频道(没有添加默认频道;另见this Github comment),然后安装一些包(python、conda、pip , 和 bzip2)。它还将这些更改写入 condarc。
【讨论】:
我看不出这个答案的意义,因为它只是对您在问题中已经引用的自述文件中所写内容的确认“可以直接与 Miniconda 进行比较,与添加了 conda-forge 是默认频道的功能" “可以直接比较”是模棱两可的。 “[miniforge] 使用 conda-forge 通道(并且仅使用 conda-forge 通道)”并没有歧义。 "可以直接比较"!="是一样的"和"conda-forge 是默认频道"对我来说听起来不是很模棱两可 "conda-forge 是默认频道" - 好的,但是在包含conda-forge
频道之后,是否包括default
conda 频道?这是模棱两可的,因此问题。 (答案是,不,miniforge 使用 conda-forge 频道并且仅 conda-forge 频道。)
default
实际上是 anaconda 频道,conda-forge
不需要这个,正如@charlesreid1 所说:NO以上是关于miniconda 和 miniforge 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
GPIOx_BSRR 这个寄存器的功能既有设置又有清除,为啥还要GPIOx_BRR这个呢?啥区
最新M1 Mac如何安装Python(miniforge)并搭建环境
Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度学习环境搭建并简单测试MPS GPU加速