mambaorg.micromamba
Rola Ansible: mambaorg.micromamba
Instalacja micromamba i opcjonalne tworzenie środowiska bazowego conda.
Linki
- GitHub
- Galaxy
- Przykład zaawansowanego użycia dla bootstrapowania oraz ustawiania środowiska conda w obrazie Docker
Motywacja
Conda to bardzo potężne narzędzie do zarządzania zależnościami w Pythonie. Niestety, w środowiskach z dużą liczbą zależności, jego powolny solver zależności może zająć nawet godziny na ukończenie.
Nowy projekt Mamba rozwiązuje ten problem, implementując solver zależności w C++, co czyni go błyskawicznie szybkim. Oprócz solvera, mamba
deleguje większość zadań do solidnego narzędzia conda
.
Micromamba to bardzo eksperymentalny menedżer pakietów czystego C++ dla środowisk conda. Ponieważ nie ma zależności od Pythona, może efektywnie tworzyć środowiska dla dowolnej wersji Pythona z jednego binarnego pliku micromamba
. Jeśli żaden z Twoich pakietów conda nie ma zależności od Pythona, to Micromamba może nawet utworzyć środowisko conda bez Pythona!
Micromamba eliminuje potrzebę posiadania "dystrybucji", takich jak Anaconda czy Miniconda. Możesz bezpośrednio ustawić swoje pożądane środowisko.
Zmienne roli
arch: linux-64
version: latest
Aby sprawdzić najnowsze architektury i numery wersji, sprawdź distributions[#].basename
, który ma format {arch}/micromamba-{version}.tar.bz2
. Obecne możliwe wartości dla arch
to linux-64
, linux-aarch64
, osx-64
, osx-arm64
, win-64
. Format version
to albo latest
, albo coś jak 0.15.2-0
, gdzie -0
oznacza numer kompilacji.
dest: /usr/local/bin/micromamba
Lokalizacja pliku wykonywalnego micromamba
.
root_prefix: /opt/conda
Gdy prefix główny jest zdefiniowany i nie istnieje, nowy prefix główny zostanie utworzony w tej lokalizacji.
packages:
- mamba
- python=3.9
Lista początkowych pakietów conda do zainstalowania, gdy nowy prefix główny zostanie stworzony.
file: /tmp/environment.yaml
Jako alternatywę dla listy packages
, można podać plik środowiska lub plik blokady.
root_prefix_condarc:
channels:
- conda-forge
Zawartość do zapisania w .condarc
w nowym prefixie głównym. Jeśli nie jest zdefiniowane, plik .condarc
nie zostanie utworzony.
Przykłady Playbooków
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
To pobiera plik wykonywalny micromamba
do domyślnej lokalizacji /usr/local/bin/micromamba
.
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
vars:
dest: /tmp/micromamba
root_prefix: /opt/conda
packages:
- mamba
- python=3.9
To pobiera micromamba
do /tmp/micromamba
i tworzy nowy prefix główny w /opt/conda/
z Pythonem 3.9 i Mambą.
- hosts: servers
become: yes
become_user: condauser
roles:
- mambaorg.micromamba
vars:
root_prefix: ~/micromamba
root_prefix_condarc:
channels:
- conda-forge
packages:
- s3fs-fuse
To tworzy nowy prefix główny w /home/conda-user/micromamba
i tworzy środowisko conda bez Pythona. Dodatkowo umieszcza plik .condarc
w prefixie głównym, aby skonfigurować domyślne źródło pakietów jako kanał conda-forge
.
Kolejne użycie
Aby uruchomić jakiekolwiek polecenia z środowiska conda, należy je najpierw aktywować. Aktywacja polega na modyfikacji PATH
i innych zmiennych środowiskowych w aktywnej powłoce (zwykle Bash). Można to zrobić na różne sposoby.
Bezpośrednio
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
Pierwsze polecenie wykonuje sekwencję komend, która definiuje funkcję Bash również nazwanej micromamba
. (W przeciwnym razie plik wykonywalny micromamba
działałby jako podproces, który nie jest w stanie zmodyfikować środowiska powłoki.) Drugie polecenie uruchamia nowo zdefiniowaną funkcję Bash, aby aktywować środowisko w /opt/conda
.
Z użyciem skryptu inicjalizacyjnego
micromamba shell init --shell=bash --prefix=/opt/conda
To modyfikuje ~/.bashrc
, aby w kolejnych interaktywnych sesjach Basha wystarczyło wpisać micromamba activate
, aby aktywować środowisko. (Polecenie micromamba activate
można również dodać do ~/.bashrc
, jeśli zajdzie taka potrzeba.)
Z użyciem mamba lub conda
Ponieważ micromamba jest eksperymentalny, zamiast polegać na powyższych możliwościach wykorzystujących micromamba
do aktywacji, warto zainstalować mamba
w środowisku i uruchomić
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
Te polecenia modyfikują ~/.bashrc
, aby środowisko było w pełni aktywowane w kolejnych interaktywnych sesjach Basha.
Rozwiązywanie problemów
Jeśli Bash nie jest uruchamiany interaktywnie, plik .bashrc
nie zostanie załadowany, więc uruchomienie micromamba activate
zakończy się niepowodzeniem. W takim przypadku można użyć bezpośredniej procedury aktywacji lub wymusić interaktywną powłokę, dodając flagę -i
do polecenia bash
.
Licencja
MIT
Informacje o autorze
Obecnie utrzymywany przez Bena Maresa (@maresb) oraz Andreasa Trawoegera (@atrawog). Wersja początkowa autorstwa @maresb. Wszelkie wkłady są mile widziane!
Install micromamba, and optionally create a base conda environment.
ansible-galaxy install mambaorg.micromamba