https://findy-code.io/media/articles/chotto-wakaru-python
結論: 今から始めるなら uv
- 新規プロジェクトは
uv一択でいい。Python 本体のバージョン管理、仮想環境、パッケージ管理を全部やってくれる - ライブラリを配布する個人開発なら
Hatchも選択肢。用途ごと(テスト / Linter / 型チェック)に環境を分けられる - 既存の Poetry / Pipenv プロジェクトは急いで移行しなくてよい。動いているなら止めない
- venv + pip は「必須科目」ではなくなった。ただし中で何が起きているかを知るには依然として有用
venv + pip の課題
- 特定のパッケージをアンインストールしづらい(依存で入ったものが残る)
- pip freeze だと直接入れたものと推移的依存の区別がつかない
- スクリプトごとに仮想環境が増殖する
- ツールをプロジェクト横断で最新に保つのが大変
ツールの変遷
- Pipenv: ロックファイルを普及させた先駆け(Pipfile)
- pip-tools: pip の補助。pip-compile でロック、pip-sync で同期
- Poetry / Hatch: 一体型。仮想環境をプロジェクト外に置いて壊れにくくした
- Rye: 2023 年、Rust 製の先駆け。のちに uv へ
uv の何が効いたか
- 速い。pip で 10 分かかる環境構築が数十秒
- uv.lock と環境を常に同期させるので再現性が高い
- 仮想環境の操作を知らなくても開発できる状態にした
今はuvを使うのがデファクトなのか?