先日バージョン1.0.0がリリースされたmicromamba(mamba)を使ってみたのでそのメモ
micromambaの概要
micromambaは一言でいうとC++で書かれたconda互換バイナリです。
micromambaは単一のバイナリなのでcondaどころかPythonすら必要ありません。
conda環境を最小限の容量で入れようとするとおよそ50MB、mambaまで入れると合わせて70MB程度ですが、micromambaのバイナリは8MBとちょっとだけ、まさにmicroです。結局いくつものパッケージを入れるので容量は使う気がしますが...
しかし、仮想環境を立てる機能はもちろん健在で、Pythonとそのパッケージ群も利用することはもちろん、conda-forgeなどで提供されているLLVM-ClangやGo言語、Rust、Ruby、juliaupなどを独立または共存させてインストールできるようになるマルチ仮想環境構築ツールになっています。
micromambaのインストール
先ほど書いた通りmicromambaは単一のバイナリなので、インストールというよりは環境変数の設定やshellへのhookの設定をすることになります。
自動インストール
MacならばHomebrewでインストールできます。
brew install --cask micromamba
そのほか自動インストール用のスクリプトも用意されていて、micro.mamba.pm/install.shからダウンロードできます。
curlを使って、
curl micro.mamba.pm/install.sh | bash
curl micro.mamba.pm/install.sh | zsh
のようにパイプで渡してもOKです。
手動インストール
残念ながらWindowsでは自動インストールが用意されていないため手動でインストールする必要があります。(LinuxとMacの手動インストールもほぼ同様なので割愛します)
まずはバイナリをダウンロードします。
https://micro.mamba.pm/api/micromamba/win-64/latest または conda-forgeからどうぞ
ダウンロードしたファイル(micromamba-x.x.x-x.tar.bz2)を 2回 解凍するとlisenceとLibraryの2つのディレクトリが入っています。(7zipなどを使ってください)
Library\bin\micromamba.exeをそのまま使ってもよいし適当な場所に移動してもOK。
次にmicromambaのルートディレクトリを設定します。condaやmambaでいうところの(base)になるディレクトリです。
環境変数名:MAMBA_ROOT_PREFIX
環境変数値:任意のディレクトリ ( 例えば ~/micromamba や C:\umamba など )
システムの環境変数に入れても構いませんし、この後micromamba shell initするshellへ一時的な環境変数として入れるだけでも大丈夫です。
最後にmicromamba shell initを実行したら次回shell起動時にmicromambaにhookされた状態になります。
micromamba shell init --shell=cmd.exeと指定すればコマンドプロンプトのhook用スクリプトが用意されてAutoRunレジストリが新規作成されます。
micromamba shell init --shell=powershellと指定すればPowershellのhook用スクリプトが用意され、~\WindowsPowershell\profile.ps1が新規作成されます。
hook用スクリプトは%MAMBA_ROOT_PREFIX%\condabinの中に作成されます。
アンインストール
何らかの事情でmicromambaの自動hookを解除したい場合はmicromamba shell deinitを実行します。
micromamba shell deinit --shell=cmd.exeと指定すればコマンドプロンプトのhook用スクリプトとAutoRunレジストリキーが削除されます。
micromamba shell init --shell=powershellと指定すればPowershellのhook用スクリプトと~\WindowsPowershell\profile.ps1が削除されます。
個人的な設定を行っている場合は注意が必要かもしれません。
micromamba shell deinitを行ってもmicromambaで作成した仮想環境やパッケージのキャッシュは消えないので、手動で削除するかmicromamba env remove -n ENV_NAMEやmicromamba clean --allをあらかじめ実行しておいてください。
仮想環境の作成
あとはcondaの使い方と同じです。
micromamba create -n blank_envとすれば何もインストールされない(blank_env)環境ができます。
インストールした直後はchannelsの設定をしていないためパッケージの検索ができません。
~\.mambarcを作成して任意のchannelを追加するか、
channels:
- conda-forge
micromamba config append channels conda-forgeのようにコマンドで追加してください。
micromamba config appendで設定を行うと~\.condarcが編集されます。
micromamba create -n llvm_c clangdevのように指定すると(llvm_c)環境の作成と同時にclangdevとその依存パッケージをインストールします。
micromamba create -n ruby ruby -c conda-forgeのようにchannelを指定したり、
micromamba create -n rust_lang rust=1.60.*のようにversionやハッシュを指定することもできます。
あとはconda ( mamba ) とほぼ同様に使えます。
Python 環境を構築したときVSCodeが見つけてくれない
conda でPythonをインストールするとPython拡張機能が入っているVSCodeは自動でインタープリンタを見つけてくれるのですが、 micromamba でPythonをインストールしてもVSCodeが自動で見つけてくれません。
Python拡張機能の設定ではcondaPathを設定することができるのですがここに micromamba (micromamba.exe, micromamba.bat)を指定しても見つけてくれません。
conda のバージョン4.4以上でしか機能しないので micromamba の現バージョン1.0.0は弾かれてしまっているようです。
その他気になるところ
conda と micromamba で --version 引数に対する出力形式が違うのも問題になるかも?
$ conda --version
conda 22.9.0
$ micromamba --version
1.0.0
micromamba env list だとアスキーアートでロゴが入るため -q オプションをつける必要がありそう。
$ conda env list
# conda environments:
#
base * ~\conda
py1 ~\conda\envs\py1
py2 ~\conda\envs\py2
$ micromamba env list
__
__ ______ ___ ____ _____ ___ / /_ ____ _
/ / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/
/ /_/ / / / / / / /_/ / / / / / / /_/ / /_/ /
/ .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/
/_/
Name Active Path
-------------------------------------------
base ~\micromamba
py1 ~\micromamba\envs\py1
py2 ~\micromamba\envs\py2
$ micromamba -q env list
Name Active Path
-------------------------------------------
base ~\micromamba
conda ~\micromamba\envs\conda
py1 ~\micromamba\envs\py1
py2 ~\micromamba\envs\py2
LinuxまたはMacのPyCharmであれば conda のパスに micromambaを置いた場所/micromamba -q のように指定することで conda とおよそ同様に使えるようになります。
その他のメモ
- Powershell用のhookスクリプトは署名されないのでhookできない場合は実行ポリシーを変更してください。
- Windowsで
micromambaを使うときは CMD や PowerShell よりも Git Bash とかを使った方が無難そう(micromamba shell initすると~/.bash_profileにhookスクリプトが追加される) -
micromamba env createが使えない(他にも指定子が異なったりすべてのオプションには対応していなかったりする)
VSCode向けにMicromamba拡張機能が作られていたりするのでそのうちVSCode上で仮想環境の作成切替、開発環境の構築まで完結する日が来るのかも?