mambaorg.micromamba
Rola Ansible: mambaorg.micromamba
Instalacja micromamba oraz opcjonalne stworzenie głównego/bazowego środowiska conda.
Linki
- GitHub
- Galaxy
- Przykład zaawansowanego użycia do bootstrappingu oraz tworzenia systemowego środowiska conda w kontenerze Docker
Motywacja
Conda to potężne narzędzie do zarządzania zależnościami w Pythonie. Niestety, w przypadku środowisk z dużą liczbą zależności, jego wolny solver zależności może zajmować godziny, aby zakończyć działanie.
Nowy projekt Mamba rozwiązuje ten problem, przepisując solver zależności w C++, co czyni go błyskawicznie szybkim. Poza solverem, mamba
deleguje większość zadań do niezawodnego narzędzia conda
.
Micromamba to wysoce eksperymentalny menedżer pakietów napisany w czystym C++ dla środowisk conda. Dzięki temu, że 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, Micromamba zdoła stworzyć środowisko conda bez Pythona!
Micromamba eliminuje konieczność korzystania z "dystrybucji" takich jak Anaconda czy Miniconda. Możesz bezpośrednio skonfigurować 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
. Aktualne możliwe wartości dla arch
to linux-64
, linux-aarch64
, osx-64
, osx-arm64
, win-64
. Format version
to albo latest
, albo coś takiego jak 0.15.2-0
, gdzie -0
oznacza numer kompilacji.
dest: /usr/local/bin/micromamba
Lokalizacja pliku wykonywalnego micromamba
.
root_prefix: /opt/conda
Gdy określony jest prefiks główny i jeszcze nie istnieje, nowy prefiks główny zostanie utworzony w tej lokalizacji.
packages:
- mamba
- python=3.9
Lista początkowych pakietów conda do zainstalowania podczas tworzenia nowego prefiksu głównego.
file: /tmp/environment.yaml
Alternatywnie do listy packages
, można podać plik środowiskowy lub plik blokady.
root_prefix_condarc:
channels:
- conda-forge
Zawartość do zapisania w pliku .condarc
w nowym prefiksie głównym. Jeśli nie jest określona, plik .condarc
nie zostanie utworzony.
Przykładowe playbooki
- 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 prefiks 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 prefiks główny w /home/conda-user/micromamba
i tworzy środowisko conda bez Pythona. Umieszcza także plik .condarc
w prefiksie głównym, aby skonfigurować pakiety do domyślnej instalacji z kanału conda-forge
.
Użytkowanie późniejsze
Aby uruchomić jakiekolwiek polecenia z środowiska conda, najpierw musi być aktywowane. Aktywacja polega na zmianie PATH
i innych zmiennych środowiskowych w aktywnym terminalu (zwykle Bash). Można to osiągnąć na różne sposoby.
Bezpośrednio
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
Pierwsze polecenie wykonuje sekwencję poleceń, która definiuje funkcję Bash o tej samej nazwie 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 znajdujące się w /opt/conda
.
Z użyciem skryptu inicjalizacyjnego
micromamba shell init --shell=bash --prefix=/opt/conda
To modyfikuje ~/.bashrc
, aby w kolejnych interaktywnych sesjach Bash, komenda micromamba activate
wystarczała do aktywacji środowiska. (Polecenie micromamba activate
można dodać do ~/.bashrc
, jeśli to pożądane.)
Z mamba lub conda
Ponieważ micromamba jest eksperymentalny, zamiast polegać na wyżej wymienionych możliwościach, które używają micromamba
do aktywacji, zaleca się zainstalowanie mamba
w środowisku i uruchomienie
/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 Bash.
Rozwiązywanie problemów
Jeśli Bash nie jest uruchamiane w trybie interaktywnym, plik .bashrc
nie zostanie załadowany, więc uruchomienie micromamba activate
zakończy się niepowodzeniem. W takim przypadku można skorzystać z procedury bezpośredniej aktywacji lub wymusić interaktywną powłokę, dodając flagę -i
do polecenia bash
.
Licencja
MIT
Informacje o autorze
Obecnie utrzymywane przez Bena Maresa (@maresb) i 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