uvが流行っているので移行した。
Miniforgeの仮想環境のエクスポート
# Miniforgeで作成した仮想環境を確認
conda env list
以下で仮想環境ごとに“requirements.txt”を作成する。pipでインストールしたパッケージも出力される。pip freezeだとcondaで入れたやつが表示されない。ただ、後述するが結局pip list --format=freezeの方がよかったかもしれない。
# wheel=0.37.1=pyhd8ed1ab_0 から wheel==0.37.1 のように整形
conda list -n hoge -e | cut -d= -f -2 | sed 's/=/==/' >requirements_conda_hoge.txt
Miniforgeのアンインストール
Homebrewで入れたもの。
.zshrcの# >>> conda initialize >>>から# <<< conda initialize <<<までの記述を削除する。
仮想環境が心配な場合、/usr/local/Caskroom/miniforge/base/envsをコピーしておく。
ここからは実際のアンインストール。
brew uninstall miniforge
rm -rf ~/.condarc ~/.conda
# オプション
brew uninstall conda-zsh-completion
uvのインストール
Homebrewで入れる。
brew install uv
“requirements.txt”から環境を復元する
condaでは環境とプロジェクトは1対1対応しなくてもいけたが、uvではそうではないので各“requirements.txt”を相当するプロジェクトフォルダに配置しておく。
まずはinit。
# pythonのバージョンは“requirements.txt”から確認
uv init --bare -p 3.11.4
そして、以下を実行すればいいのだがconda-forgeにしかないやつが含まれているので当然エラーが出る。
uv add -r requirements_conda_hoge.txt -p 3.11.4
エラーを吐かなくなるまで該当のパッケージをコメントアウトし、このコマンドを繰り返した。
後述すると言っていたが、pip list --format=freezeならこの作業を省けるはずである。試していないが。
今回の方法はバックアップ的な要素が強いのかもしれない。いずれの方法にせよ、完全な移行とは言えない。
おわりに
uvめちゃ速い。
uv runで実行すればactivateいらないのが便利。