跳到主要内容

Conda 23.10.0:libmamba 现在是默认的求解器

·3 分钟阅读
Jaime Rodríguez-Guerra
指导委员会成员
Jannis Leidel
指导委员会成员

通过 23.10.0 版本,我们将 conda 的默认求解器更改为 conda-libmamba-solver 🥳 🚀

libmamba 构建于 libsolv 之上,libsolv 是 openSUSE 提供的一个速度更快的求解器。之前的“经典”求解器基于 pycosat/Picosat,并在可预见的未来仍将是 conda 的一部分。 回退是可能的并且可用

为什么要切换求解器?

简而言之:为了使 conda 更快、更准确。

“求解器”是许多包管理器的核心组件;它计算当用户请求从包仓库安装包时要安装哪些依赖项(以及这些依赖项的哪个版本)。为了解决 conda 生态系统中与增长相关的挑战,conda 维护者与合作伙伴 AnacondaQuansightQuantStack 一起,在 2022 年 12 月推出了基于 Mamba 项目的新 conda 依赖关系求解器。

自 2023 年 7 月以来,conda-libmamba-solver 插件已包含在所有主要的 conda 生态系统安装程序(miniforgeminicondamambaforgeAnaconda 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 运行时间的更大努力的一部分。另请参阅