micromamba
Ansible роль: mambaorg.micromamba
Установка micromamba и, при необходимости, создание корневой/базовой среды conda.
Ссылки
- GitHub
- Galaxy
- Пример продвинутого использования для начальной настройки и создания системы conda в Docker образе.
Мотивация
Conda — это очень мощный инструмент управления зависимостями, ориентированный на Python. Однако для сред с большим количеством зависимостей его медленный решатель зависимостей может занимать часы.
Новый проект Mamba решает эту проблему, переписывая решатель зависимостей на C++, и работает очень быстро. Кроме решателя, mamba
делегирует большинство задач надежному инструменту conda
.
Micromamba — это высокоэкспериментальный чистый C++ пакетный менеджер для conda-сред. Поскольку у него нет зависимостей от Python, он может эффективно создавать среды для любой версии Python из единственного двоичного файла micromamba
. Если ни один из ваших пакетов conda не имеет зависимости от Python, то Micromamba даже создаст среду conda без Python!
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
и создает среду conda без Python. Также в корневом префиксе помещается файл .condarc
, чтобы настроить установку пакетов по умолчанию из канала conda-forge
.
Дальнейшее использование
Чтобы запустить любые команды из среды conda, ее необходимо сначала активировать. Активация включает изменение PATH
и других переменных окружения в активной оболочке (обычно Bash). Это можно сделать различными способами.
Прямо
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
Первая команда выполняет последовательность команд, которые определяют функцию Bash с тем же именем micromamba
. (В противном случае исполняемый файл micromamba
запустится как субпроцесс, который не может изменить среду оболочки.) Вторая команда запускает новоопределенную функцию Bash для активации среды, расположенной в /opt/conda
.
С помощью скрипта инициализации
micromamba shell init --shell=bash --prefix=/opt/conda
Это изменяет ~/.bashrc
, так что в последующих интерактивных сессиях Bash команда micromamba activate
будет достаточно для активации среды. (Команду micromamba activate
можно добавить в ~/.bashrc
, если это необходимо.)
С помощью mamba или conda
Поскольку micromamba является экспериментальным, вместо того, чтобы полагаться на описанные выше способы активации через micromamba
, рекомендуется установить mamba
в среду и выполнить
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
Эти команды изменяют ~/.bashrc
, так что среда будет полностью активирована в последующих интерактивных сессиях Bash.
Устранение неполадок
Если Bash не запускается в интерактивном режиме, файл .bashrc
не будет загружен, поэтому запуск команды micromamba activate
завершится неудачей. В этом случае вы можете использовать прямую процедуру активации или запустить интерактивную оболочку, передав флаг -i
команде bash
.
Лицензия
MIT
Информация об авторе
В настоящее время поддерживается Беном Мэресом (@maresb) и Андреасом Травогером (@atrawog). Исходная версия была создана @maresb. Приветствуются вклады и предложения!
Install micromamba, and optionally create a base conda environment.
ansible-galaxy install maresb/ansible-micromamba-role