mambaorg.micromamba
Ansible 角色: mambaorg.micromamba
安装 micromamba,并可选择创建一个根/基础的 conda 环境。
链接
动机
Conda 是一个非常强大的以 Python 为中心的依赖管理工具。不幸的是,对于拥有大量依赖的环境,它的依赖求解器可能需要 几小时 才能完成。
新的 Mamba 项目通过用 C++ 重新实现依赖求解器解决了此问题,速度非常快。除了求解器外,mamba
将大多数任务委派给可靠的 conda
工具。
Micromamba 是一个高度实验性的纯 C++ 包管理器,专为 conda 环境设计。由于它没有 Python 依赖,因此它可以有效地为任何版本的 Python 创建环境,仅需一个 micromamba
可执行文件。如果你的 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
除了包列表外,还可以提供一个环境文件或锁文件。
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
可执行文件将作为 子进程 运行,无法修改 shell 的环境。)第二条命令运行定义的新 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
将失败。在这种情况下,您可以使用 直接激活程序 或通过向 bash
命令传递 -i
标志强制打开交互式 shell。
许可证
MIT
作者信息
目前由 Ben Mares (@maresb) 和 Andreas Trawoeger (@atrawog) 维护。初始版本由 @maresb 制作。欢迎贡献!