当前位置:   article > 正文

Python中使用 mamba 加快创造虚拟环境的速度_找不到命令 mamba

找不到命令 mamba

为什么“解决环境”要花费过长时间?

为了理解导致解决阶段持续时间延长的因素,我首先参考了有关Conda性能的文档。该文档提供了一些在遇到减速问题时需要考虑的问题:

  1. 你是在创建新环境还是在已有环境中安装?
  2. 你的环境中是否有通过pip安装的依赖?
  3. 你正在使用哪些渠道?
  4. 你正在安装哪些包?
  5. 渠道的元数据是否正常?
  6. 渠道之间是否存在不良互动?

为了回答这些问题,我当时正在创建一个新的虚拟环境,其中包含通过pip安装的依赖项。我同时使用了anacondaconda-forge渠道,并且包都来自不同的渠道。

为了验证渠道元数据是否正常,我执行了以下命令。

conda search --override-channels --channel=anaconda
conda search --override-channels --channel=conda-forge
  • 1
  • 2

幸运的是,没有遇到错误,表明渠道元数据似乎正常。但我仍然不确定渠道是否以不良方式互动。

尝试改善Conda的性能

之前提到的文档以及标题为了解和改善Conda的性能的博客文章提供了一些建议的方法来解决这个问题。

  1. 通过“conda-metachannel”减少Conda的问题规模(可能指SAT问题)。
  2. 配置渠道优先级。
  3. 减少索引 - 明确指定更具体的包规范(例如,版本、构建字符串)。

使用“conda-metachannel”

由于涉及到大量的包和渠道交互的复杂性,当时没有测试这种方法。

配置渠道优先级

我最初尝试通过调整.condarc文件中的渠道优先级来解决问题。我将较小的渠道,如defaultsanaconda,放在较大的渠道,如conda-forge之前,使用strict模式。然而,这种方法并没有有效解决问题,有时甚至在解决阶段失败。随后,我尝试了flexible模式,但解决时间仍然过长。以下是.condarc文件中的配置示例。

channel_priority: flexible
channels:
  - defaults
  - anaconda
  - conda-forge
  • 1
  • 2
  • 3
  • 4
  • 5

减少索引

为了优化索引过程,我选择明确为每个包指定版本。例如,我使用了numpy==1.15.4的格式,而不是numpy。理论上,这种方法应该通过允许Conda更有效地缩小候选选项来加快解决阶段。

在实施此修改后,我观察到解决阶段需要大约70分钟才能完成。为了评估此解决方案的可靠性,我在其他计算机上进行了测试。令人惊讶的是,在某些计算机上,该过程在大约15分钟内完成,而在其他计算机上似乎无限运行。因此,显然这种方法并不能提供明确的解决方案

使用mamba创建环境

尽管遵循了之前提到的建议但没有成功,我决定探索另一种解决问题的方法。基于同事的建议,我研究了mamba,这是Conda包管理器的C++实现。在使用这个工具进行实验后,我成功解决了问题。现在,环境创建过程只需要几分钟。

在这里插入图片描述

安装mamba

因此,我从运行以下命令(适用于Linux)开始了安装mamba

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh
  • 1
  • 2

在安装过程中,可能会遇到一个提示,询问是否初始化conda。在这种情况下,建议选择“是”,以确保mamba可以与conda正常协作,并避免两个包管理器之间可能的冲突。

安装成功后,终端将显示如下截图中的信息。重新启动终端后,您可以通过在命令提示符中键入mamba来验证安装。

TCnK7qRlWhS0Y9a8rA2DTcKwWoi2-poc2xbi

安装可能存在的问题

如果您在重新启动终端后仍然遇到“未找到’mamba’命令”的错误,请检查您的.bashrc文件中的conda部分。确保conda.sh的路径指向mamba的安装目录,如下图所示。

mamba

使用mamba创建虚拟环境

在安装之后,我继续使用mamba创建了一个新的虚拟环境。我执行了以下命令 mamba env create -f environment.yaml --prefix $(pwd),使用environment.yaml文件中提供的规范创建环境,并将环境放在当前目录中。

与conda命令的兼容性

尽管问题最终得到解决,但由于需要使用mamba而不是conda来创建环境,引发了一个新的问题。这提出了一个潜在的挑战,因为我们的项目中有许多地方都使用conda来配置环境设置和部署。

然而,有一个好消息:mambaconda命令在某种程度上是可以互换的。这意味着我们仍然可以使用condamamba创建的环境进行交互,如下图所示。

因此,很幸运,我们的团队不需要重构任何现有的流程,除了环境创建的特定步骤之外。这意味着我们可以无缝地集成使用mamba来创建环境,而不会干扰我们的工作流程的其他部分。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/626140
推荐阅读
相关标签
  

闽ICP备14008679号