Pythonのパッケージについて

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を使うのがデファクトなのか?