Zenn
Open3

mise+uvでpypy使うとエラーが出た

桜海 / oumi桜海 / oumi

mise+uvはいいぞ

たくさんZennにも記事がそれぞれ上がっているので詳細は端折りますが、miseもuvもとてもモダンで使い心地のいい仮想環境ツールです。

https://mise.jdx.dev/about.html

https://docs.astral.sh/uv/

uv、実はタスクランナーが無いんですが、miseは標準搭載していたりします。あとシンプルに開発環境が全て集約できて気持ちがいい。ちなみにmiseが公式で対応しています。

桜海 / oumi桜海 / oumi

pypy使おうとするとエラーが出る

> python
mise WARN  no precompiled python found for pypy@3.11, force mise to use a precompiled version with `mise settings set python.compile false`
python-build: definition not found: pypy@3.11
mise ERROR ~/Library/Caches/mise/python/pyenv/plugins/python-build/bin/python-build failed
python-build: definition not found: pypy@3.11
mise ERROR failed to install core:python@pypy@3.11
mise ERROR ~/Library/Caches/mise/python/pyenv/plugins/python-build/bin/python-build exited with non-zero status: exit code 2
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
fish: Unknown command: python

このエラーを見てまず思い浮かんだのはmiseがpypyに対応していないということです。それで諦めてcpythonにしようかとも思ったのですが、mise ls-remote pythonをするとちゃんとpypyのディストリビューションも並んでいます。
どうやらmiseが対応していないわけではなさそう。

桜海 / oumi桜海 / oumi

結論:.python-versionだけ気を配ってあげよう

よく見ると、python@pypy@3.11というキメラな文字列があることが分かります。uv python pin pypyをすると、.python-version内には以下のように記述されます。

pypy@3.11

これが災いのもとでした。pypy3.11とアットマークを抜いてあげるだけで、uvもmiseもちゃんと認識してくれます。
ちなみに、そもそもmiseからバージョン管理を行い、mise sync python --uvをすることでうまく同期してくれます。なんでここで詰まってたんだ...orz

作成者以外のコメントは許可されていません