mambaorg.micromamba
Ansible 角色: mambaorg.micromamba
安装 micromamba,并可选择性地创建根/基础的 conda 环境。
链接
动机
Conda 是一个非常强大的以 Python 为中心的依赖管理工具。不幸的是,对于依赖项较多的环境,它缓慢的依赖解析器可能需要 几个小时 才能完成。
新的 Mamba 项目通过用 C++ 重新实现依赖解析器来解决这个问题,运行速度极快。除了解析器外,mamba 的大多数任务仍然交给可靠的 conda 工具处理。
Micromamba 是一个高度实验性的纯 C++ 包管理器,适用于 conda 环境。由于没有 Python 依赖项,它可以从单个 micromamba 二进制文件中有效地创建任何版本的 Python 环境。如果您的 conda 包没有 Python 依赖项,那么 Micromamba 甚至可以创建一个没有 Python 的 conda 环境!
Micromamba 消除了对 Anaconda 或 Miniconda 这种“发行版”的需求。您可以直接设置所需的环境。
角色变量
arch: linux-64
version: latest
有关 最新架构和版本号,请检查 distributions[#].basename,格式为 {arch}/micromamba-{version}.tar.bz2。当前 arch 的可能值为 linux-64、linux-aarch64、osx-64、osx-arm64、win-64。version 的格式可以是 latest 或者类似 0.15.2-0 的形式,其中 -0 表示构建号。
dest: /usr/local/bin/micromamba
micromamba 可执行文件的存放位置。
root_prefix: /opt/conda
当根前缀被定义并且尚不存在时,将在此位置创建一个新的根前缀。
packages:
- mamba
- python=3.9
创建新的根前缀时要安装的初始 conda 包列表。
file: /tmp/environment.yaml
除了 packages 列表外,可以提供一个环境文件或锁定文件。
root_prefix_condarc:
channels:
- conda-forge
要写入新根前缀中的 .condarc 的内容。如果未定义,则不会创建 .condarc 文件。
示例剧本
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
这将 micromamba 可执行文件下载到默认位置 /usr/local/bin/micromamba。
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
vars:
dest: /tmp/micromamba
root_prefix: /opt/conda
packages:
- mamba
- python=3.9
这将 micromamba 下载到 /tmp/micromamba,并在 /opt/conda/ 中创建一个新的根前缀,安装 Python 3.9 和 Mamba。
- hosts: servers
become: yes
become_user: condauser
roles:
- mambaorg.micromamba
vars:
root_prefix: ~/micromamba
root_prefix_condarc:
channels:
- conda-forge
packages:
- s3fs-fuse
这将在 /home/conda-user/micromamba 中创建一个新的根前缀,并创建一个没有 Python 的 conda 环境。同时在根前缀中放置一个 .condarc 文件,以将默认安装的包配置为来自 conda-forge 通道。
后续使用
要从 conda 环境中运行任何命令,必须首先 激活 它。激活涉及在活动的 shell(通常是 Bash)中更改 PATH 和其他环境变量。这可以通过多种方式实现。
直接激活
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
第一个命令执行一系列命令,定义一个名为 micromamba 的 Bash 函数。(否则,micromamba 可执行文件将在一个无法修改环境的 子进程 中运行。)第二个命令运行新定义的 Bash 函数以激活位于 /opt/conda 的环境。
使用初始化脚本
micromamba shell init --shell=bash --prefix=/opt/conda
这会修改 ~/.bashrc,使得在后续的交互式 Bash 会话中,命令 micromamba activate 足以激活环境。(如果需要,可以将命令 micromamba activate 添加到 ~/.bashrc 中。)
使用 mamba 或 conda
由于 micromamba 是实验性的,建议在环境中安装 mamba,然后运行:
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
这些命令会修改 ~/.bashrc,以便在后续的交互式 Bash 会话中完全激活环境。
故障排除
如果 Bash 不是 以交互模式运行,则不会加载 .bashrc,因此运行 micromamba activate 将失败。在这种情况下,您可以使用 直接激活过程 或者通过将 -i 标志传递给 bash 命令来强制进入交互式 shell。
许可证
MIT
作者信息
目前由 Ben Mares (@maresb) 和 Andreas Trawoeger (@atrawog) 维护。最初版本由 @maresb 提供。欢迎贡献!
