新的改进和功能
Conda 22.11 版本带来了一系列社区期待已久的新改进和功能。Conda 现在运行得更快了——快很多。以下是值得注意的更改的简短列表
如果您尚未安装 conda,您可以通过安装 Anaconda Distribution 或 Miniconda 来安装。如果您已经安装了 conda(您可以在终端中输入“conda info”来检查),您只需更新 conda
conda info
conda update -n base conda
新的 conda-libmamba-solver,详解
今年三月,conda 团队推出了一个新的实验性求解器 conda-libmamba-solver,作为我们与 Quansight 合作使 conda 更快的一部分。速度提升一直是 conda 最受用户期待的更新之一,经过近一年的联合开发工作,我们非常激动地宣布 conda-libmamba-solver 现在已加入默认求解器行列。
要安装和设置新的求解器,请运行以下命令
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
您也可以参考这份全面的《入门指南》。经典求解器仍然可用。
conda-libmamba-solver 大大提高了 conda 在安装包时解决环境的速度。在我们的实验性版本公告中,我们通过在同一 Windows 机器上安装流行的 Python 包 SciPy 和 TensorFlow 来比较了求解器的性能。
在该性能测试中,经典求解器下载这两个大型库花费了 91 秒,而基于 libsolv 的求解器 libmamba 仅花费了 15 秒——速度提升了约 80%。新求解器的确切速度提升将因用户安装的环境和包而异,但您可以预期在各种用例中看到 50-80% 的提升。
在为 conda 实施新求解器的同时优先考虑最大程度的向后兼容性是一项非同寻常的挑战。Conda 被全球超过 3000 万用户使用,并且它没有支持实验性工具的底层基础设施。
直接更新默认求解器本身而不中断现有工作流程将需要高度乐观的期望。因此,我们没有这样做,而是决定与 Quansight 开发一个插件架构的概念验证,使用户可以选择替代求解器。
如果您不确定是否应该使用新的求解器,您可以参考“我应该使用 conda-libmamba-solver 吗?”,我们在其中详细介绍了经典求解器和 libmamba 求解器之间的差异。
总结:conda-libmamba-solver 现在作为一个完全支持的求解器选项提供。这得益于新的插件架构。有关插件架构的更多信息如下。
通过并行下载更快地安装 conda 包
除了提高 conda 的求解速度外,我们还大大提高了下载和提取 conda 包的速度。
并行提取可以将提取 .conda 和 .tar.bz2 文件的速度大约提高一倍。您下载的包越多,您与服务器的连接速度越快,并行下载的速度提升就越大。根据您到包服务器的延迟以及正在下载的包的数量,并行下载可以将下载过程时间缩短大约一半。
以前,当 conda 必须安装多个包时,conda 会顺序评估和提取每个包。换句话说,conda 会逐个下载包。现在,conda 将利用最多五个并行下载线程同时下载多个包。查看并行下载的实际效果。
为了仅演示下载过程的速度提升,性能测试比较了在同一机器上安装 conda .lock 文件的过程(.lock 文件包含包、环境和平台特定的信息)。此性能测试表明,与已弃用的下载过程相比,速度提高了约 38%(5.8 秒 vs. 3.6 秒)。
如果您仔细观察比较 conda 在下载过程中的行为,您会注意到,它现在看起来更像从左到右的霰弹枪扫射,而不是连续的、自上而下的包下载级联。
新的插件架构,隆重登场?
我们很高兴地宣布,将实验性 conda-libmamba-solver 带到您本地 conda 环境的插件架构现已完全投入使用。conda 的新插件架构是一项重大变革,我们希望它将成为 conda 社区和生态系统的重要补充。
Conda 的新插件架构允许用户以更低的门槛为 conda 做出贡献。通过重构 conda 代码库的许多大型代码块以包含“钩子”,我们使 conda 的许多方面(例如求解器、虚拟包和自定义子命令)与插件兼容。用户现在可以创建完全自定义的插件到 conda 生态系统,以满足他们的特定需求,而无需经过完整的同行评审过程。
此外,由于 conda 的语言和平台无关性,conda 现在可以更轻松地整合以任何语言为任何平台编写的程序化解决方案。
其他值得注意的更改
-
环境变量 LD_PRELOAD 现在通过 ‘conda info –all’ 报告。
-
–experimental-solver 标志和 conda_experimental_solver 环境变量现在即将弃用,将分别被 –solver 和 SolverChoice 替代。
-
移除了对 toolz 库的依赖:toolz.functoolz.excepts 和 toolz.itertoolz.concatv 都已被移除。
在此处阅读完整发行说明。
展望未来
我们热衷于让 conda 为所有人服务——对 conda 项目所做的更改和改进将始终以使 conda 更高性能、更灵活和更可扩展为导向和承诺。请继续关注 conda 团队对新插件架构、其对 conda 生态系统的影响以及完全用 Rust 编写的插件展示的全面分解。
我们还要感谢所有为本次 conda 版本做出贡献的贡献者(包括九位首次贡献者!)(以下是 GitHub 用户名)
@arq0017 made their first contribution in #11810
@beeankha
@conda-bot
@dbast
@dholth
@erykoff
@consideRatio made their first contribution in #12028
@jaimergp
@jezdez
@kathatherine
@kenodegard
@ForgottenProgramme made their first contribution in #11926
@hmaarrfk made their first contribution in #9946
@NikhilRaverkar made their first contribution in #11842
@pavelzw made their first contribution in #11849
@pkmooreanaconda made their first contribution in #12014
@fragmede made their first contribution in #11818
@SatyamVyas04 made their first contribution in #11870
@timhoffm
@travishathaway
@dependabot made their first contribution in #11965
@pre-commit-ci[bot]