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 提供。欢迎贡献!