跳至主要内容

Conda 23.10.0:libmamba 现已成为默认求解器

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

在这个 23.10.0 版本中,我们将 conda 的默认求解器更改为 conda-libmamba-solver 🥳 🚀

libmamba 基于 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.github.io/conda-libmamba-solver 上找到 conda-libmamba-solver 插件的文档。

有关 conda-libmamba-solver 推出计划的更多信息,请参阅我们 今年早些时候的博客文章.

conda 的其他部分也更快

libmamba 集成是改进 conda 运行时间的更大努力的一部分。另请参见