Pythonのパッケージ・プロジェクト管理ツールはまだ乱立状態にあって、どれを使えばいいのかわからないから慣れたpyenv+pipを使おうという判断をする人がいるかもしれない。その判断自体は別に否定しないけれども、初心者に教える時にpyenvを教えるのはもうそろそろやめてほしい。
- Pythonをソースからビルドするので、コンパイラや依存ライブラリを事前に揃えないといけない。依存ライブラリが足りないと中途半端なPython環境もできうる。
- デフォルトで最適化オプション(PGO+LTO)が付いてないので、最適化ビルドしたPythonより~5%程度遅い
- Windowsで使えない
Rye, pdm, Hatch などは python-build-standalone と呼ばれるビルド済みPythonをインストールする機能があるので、これらの欠点が存在しない。 Pythonをインストールするところまで、あるいはそこからvenvを作るところまでをこれらのツールに任せさえすれば、そのあとは慣れた pip を使ってもいい。 特にRyeとHatchは、その本体をインストールするのに事前にPythonを用意する必要がないので、初期状態でPythonが入っていないWindowsやmacOSで使う時にも導入手順がシンプルだ。
どうしてもプロジェクト管理ツールをインストールしたくない、言語ランタイムだけを管理したいという場合は、最近は mise というものがあるらしい。 pyenv のような言語ごとのランタイム管理ツールを置き換える anyenv や asdf というツールがあるが、 mise はそれを似たツールだけれどもデフォルトでPythonのインストールが python-build-standalone になっている。pyenv/anyenvの使い勝手のままの移行先としては最適だろう。
ちなみにRyeとmiseはRustで書かれているし、 Hatch は Python で書かれているものの PyApp というRust製のツールでパッケージ化されていてPythonランタイムや依存ライブラリを自動で用意してくれる。Rustのおかげで最近のPythonのエコシステムは大きく改善されている。