micromamba
Ansible роль: mambaorg.micromamba
Установите micromamba и при желании создайте корневую/базовую среду conda.
Ссылки
- GitHub
- Galaxy
- Пример расширенного использования для настройки системы conda в образе Docker
Мотивация
Conda — это мощный инструмент управления зависимостями для Python. К сожалению, для сред с большим количеством зависимостей его медленный решатель зависимостей может работать часами.
Новый проект Mamba решает эту проблему, переimplementируя решатель зависимостей на 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 mamba-org/ansible-role-micromamba