Conda 23.10.0:libmamba 现在是默认的求解器
·3 分钟阅读
通过 23.10.0 版本,我们将 conda 的默认求解器更改为 conda-libmamba-solver
! 🥳 🚀
libmamba
构建于 libsolv 之上,libsolv 是 openSUSE 提供的一个速度更快的求解器。之前的“经典”求解器基于 pycosat/Picosat,并在可预见的未来仍将是 conda 的一部分。 回退是可能的并且可用。
为什么要切换求解器?
简而言之:为了使 conda 更快、更准确。
“求解器”是许多包管理器的核心组件;它计算当用户请求从包仓库安装包时要安装哪些依赖项(以及这些依赖项的哪个版本)。为了解决 conda 生态系统中与增长相关的挑战,conda 维护者与合作伙伴 Anaconda、Quansight 和 QuantStack 一起,在 2022 年 12 月推出了基于 Mamba 项目的新 conda 依赖关系求解器。
自 2023 年 7 月以来,conda-libmamba-solver
插件已包含在所有主要的 conda 生态系统安装程序(miniforge、miniconda、mambaforge 和 Anaconda Distribution)中,但默认情况下处于禁用状态。一旦这些安装程序更新为包含 conda 23.10.0 或更高版本,它们将自动默认使用 conda-libmamba-solver 插件。
我会注意到哪些变化?
- 首先,复杂的求解运行速度将明显加快。 基准测试预测运行时间将提高 50% 到 80%。
- 其次,当 conda 遇到问题时,您会注意到改进的错误消息。 libmamba 的错误消息让您更深入地了解是什么触发了问题。
- 第三,
conda-libmamba-solver
在流程开始时输出有关正在使用的通道和目标平台的更多详细信息。如果您正在解析stdout
,请注意这些差异(尽管我们绝对建议为程序化使用启用--json
模式!)。
如果此更新对我不起作用,我该怎么办?
如果新的求解器没有按您预期的方式工作
- 检查您观察到的行为是否是 已知问题或有意更改。
- 如果不是这种情况,请考虑在 conda-libmamba-solver 存储库中提交错误报告或功能请求。
- 如果必要,您可以返回使用
classic
求解器,而无需修改您的 conda 安装- 在可能的情况下,将命令行选项
--solver=classic
传递给您的conda
调用。 - 否则(例如,对于
conda build ...
或constructor ...
),设置环境变量CONDA_SOLVER=classic
。 - 对于永久更改,请使用 conda 配置系统:
conda config --set solver classic
。
- 在可能的情况下,将命令行选项
在哪里可以了解更多关于 conda-libmamba-solver 的信息?
conda-libmamba-solver 插件的文档可以在 conda.github.io/conda-libmamba-solver 上找到。
有关 conda-libmamba-solver 推广计划的更多信息,另请参阅我们今年早些时候的博客文章。
conda 的其他部分也更快了
libmamba 的集成是提高 conda 运行时间的更大努力的一部分。另请参阅
- 我们如何将 conda 的索引获取带宽降低了 99%.
- Conda 现在并行下载和提取包,这大大加快了高延迟情况下的包下载速度。
- conda-package-handling 是一个库和命令行实用程序,供
conda
和conda-build
用于处理.conda
和.tar.bz2
,现在速度是以前的两倍。