6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

micromamba を使ってみたメモ

Last updated at Posted at 2022-11-04

先日バージョン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を使って、

Linuxの場合
curl micro.mamba.pm/install.sh | bash
Macの場合
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回 解凍するとlisenceLibraryの2つのディレクトリが入っています。(7zipなどを使ってください)
Library\bin\micromamba.exeをそのまま使ってもよいし適当な場所に移動してもOK。

次にmicromambaのルートディレクトリを設定します。condamambaでいうところの(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_NAMEmicromamba clean --allをあらかじめ実行しておいてください。

仮想環境の作成

あとはcondaの使い方と同じです。
micromamba create -n blank_envとすれば何もインストールされない(blank_env)環境ができます。
インストールした直後はchannelsの設定をしていないためパッケージの検索ができません。
~\.mambarcを作成して任意のchannelを追加するか、

~\.mambarc
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は弾かれてしまっているようです。

その他気になるところ

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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?