先日バージョン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上で仮想環境の作成切替、開発環境の構築まで完結する日が来るのかも?