mambaorg.micromamba
Ansible role: mambaorg.micromamba
Instalar micromamba y, opcionalmente, crear un entorno base de conda.
Enlaces
- GitHub
- Galaxy
- Ejemplo de uso avanzado para iniciar y configurar un entorno de conda en una imagen de Docker
Motivación
Conda es una herramienta de gestión de dependencias muy potente centrada en Python. Sin embargo, para entornos con muchas dependencias, su solucionador de dependencias lento puede tardar horas en completarse.
El nuevo proyecto Mamba aborda este problema al reimplementar el solucionador de dependencias en C++, siendo muy rápido. Aparte del solucionador, mamba
delega la mayoría de las tareas a la herramienta conda
, que es de confianza.
Micromamba es un gestor de paquetes muy experimental y completamente en C++ para entornos de conda. Debido a que no tiene dependencias de Python, puede crear entornos para cualquier versión de Python a partir de un único binario micromamba
. Si ninguno de tus paquetes de conda tiene una dependencia de Python, Micromamba incluso puede crear un entorno de conda sin Python.
Micromamba elimina la necesidad de "distribuciones" como Anaconda o Miniconda. Puedes configurar tu entorno deseado directamente.
Variables del rol
arch: linux-64
version: latest
Para conocer las últimas arquitecturas y números de versión, revisa distributions[#].basename
, que tiene el formato {arch}/micromamba-{version}.tar.bz2
. Los valores actuales posibles para arch
son linux-64
, linux-aarch64
, osx-64
, osx-arm64
, win-64
. El formato de version
es latest
o algo como 0.15.2-0
, donde -0
indica el número de compilación.
dest: /usr/local/bin/micromamba
Ubicación del ejecutable micromamba
.
root_prefix: /opt/conda
Cuando se define el prefijo raíz y no existe, se creará un nuevo prefijo raíz en esta ubicación.
packages:
- mamba
- python=3.9
Una lista de paquetes iniciales de conda que se instalarán al crear un nuevo prefijo raíz.
file: /tmp/environment.yaml
Como alternativa a la lista de packages
, se puede proporcionar un archivo de entorno o un archivo de bloqueo.
root_prefix_condarc:
channels:
- conda-forge
Contenido para escribir en .condarc
en el nuevo prefijo raíz. Si no se define, no se crea ningún archivo .condarc
.
Ejemplos de Playbooks
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
Esto descarga el ejecutable micromamba
en la ubicación predeterminada de /usr/local/bin/micromamba
.
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
vars:
dest: /tmp/micromamba
root_prefix: /opt/conda
packages:
- mamba
- python=3.9
Esto descarga micromamba
en /tmp/micromamba
y crea un nuevo prefijo raíz en /opt/conda/
con Python 3.9 y Mamba.
- hosts: servers
become: yes
become_user: condauser
roles:
- mambaorg.micromamba
vars:
root_prefix: ~/micromamba
root_prefix_condarc:
channels:
- conda-forge
packages:
- s3fs-fuse
Esto crea un nuevo prefijo raíz en /home/conda-user/micromamba
y crea un entorno de conda sin Python. También coloca un archivo .condarc
en el prefijo raíz para configurar los paquetes que se instalarán por defecto desde el canal conda-forge
.
Uso posterior
Para ejecutar cualquier comando desde un entorno de conda, primero debe ser activado. La activación implica modificar el PATH
y otras variables de entorno en el shell activo (generalmente Bash). Esto se puede lograr de varias maneras.
Directamente
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
El primer comando ejecuta una secuencia de comandos que define una función en Bash, también llamada micromamba
. (De lo contrario, el ejecutable micromamba
se ejecutaría como un subproceso que no puede modificar el entorno del shell). El segundo comando ejecuta la función de Bash recién definida para activar el entorno ubicado en /opt/conda
.
Con un script de inicialización
micromamba shell init --shell=bash --prefix=/opt/conda
Esto modifica ~/.bashrc
para que en sesiones interactivas futuras de Bash, el comando micromamba activate
sea suficiente para activar el entorno. (El comando micromamba activate
se puede agregar a ~/.bashrc
si se desea).
Con mamba o conda
Dado que micromamba es experimental, en lugar de depender de las posibilidades anteriores que usan micromamba
para activar, se aconseja instalar mamba
en el entorno y ejecutar
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
Estos comandos modifican ~/.bashrc
para que el entorno se active completamente en sesiones interactivas futuras de Bash.
Solución de problemas
Si Bash no se ejecuta de forma interactiva, entonces .bashrc
no se cargará, por lo que ejecutar micromamba activate
fallará. En este caso, puedes usar ya sea el procedimiento de activación directa o forzar un shell interactivo pasando el flag -i
al comando bash
.
Licencia
MIT
Información del autor
Actualmente mantenido por Ben Mares (@maresb) y Andreas Trawoeger (@atrawog). Versión inicial por @maresb. ¡Las contribuciones son bienvenidas!
Install micromamba, and optionally create a base conda environment.
ansible-galaxy install mambaorg.micromamba