Conda 23.10.0:libmamba 现已成为默认求解器
·阅读时间:3 分钟
在这个 23.10.0 版本中,我们将 conda 的默认求解器更改为 conda-libmamba-solver
! 🥳 🚀
libmamba
基于 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.github.io/conda-libmamba-solver 上找到 conda-libmamba-solver
插件的文档。
有关 conda-libmamba-solver
推出计划的更多信息,请参阅我们 今年早些时候的博客文章.
conda 的其他部分也更快
libmamba 集成是改进 conda 运行时间的更大努力的一部分。另请参见
- 我们如何将 conda 的索引获取带宽降低了 99%.
- Conda 现在并行下载和解压缩包,这在延迟很高的情况下大大加快了包下载速度。
- conda-package-handling 是一个由
conda
和conda-build
使用的库和命令行实用程序,用于处理.conda
和.tar.bz2
,现在比以前快两倍.