generated at
uv
pip, pip-tools, virtualenv のドロップインプレースツール。かなり速い。

shimizukawa 初めは、Windowsではpipvenvが遅いので、uvを使うことにしました。
shimizukawa uv-0.3 でPythonの自動インストールに対応したのでtoxでのテストが捗りました。パッケージ管理もできるようになった
shimizukawa uv-0.4 では配布しないプロジェクトのパッケージ管理も扱えるようになった

shimizukawa.icon 的uv目玉機能のリリースバージョン
uv-0.3.0 pythonインストール対応
uv-0.4.0 パッケージではないプロジェクトに対応
uv-0.4.16 uv publish 対応 (twine置き換え)
uv-0.4.27 dependency-groups (PEP-735) 対応
uv-0.5.3 競合するextraの解決(PyToach向け)
uv-0.5.4 --all-groups 対応
uv-0.5.6 uv build backend
uv-0.5.7 uv build backend
uv init --build-backend uv --preview https://github.com/astral-sh/uv/pull/9661
Python-3.14 対応
動的バージョンはuv.lockから除外
setuptools_scm等でビルド毎にバージョンが変化すると uv.lock が毎回更新されてしまっていた問題の解消
動的バージョンをuv.lockから除外する処理(0.15.19)のバグ修正

基本
> Rust で書かれた非常に高速な Python パッケージインストーラとリゾルバ。pipとpip-compileを置き換えるものとして設計されています。
> uvは、Ruffの開発者であるAstralの支援を受けています。
> 特徴
> ⚖️ 一般的な pip、pip-tools、virtualenv コマンドのドロップイン置き換え。
> ⚡️ pipおよびpip-tools(pip-compileおよびpip-sync)より10-100倍高速。
> 💾 依存性の重複排除のためのグローバルキャッシュにより、ディスクスペースが効率的。
> uv は静的バイナリで、Rust や Python なしでインストールできます。
> 🧪 上位 10,000 の PyPI パッケージに対してアットスケールでテスト済み。
> 🖥️ macOS、Linux、Windows をサポート。
> ᾐ 依存バージョンのオーバーライドや代替解決戦略などの高度な機能。
> ⁉️ 競合追跡リゾルバによるクラス最高のエラーメッセージ。
> 🤝 編集可能なインストール、Git依存性、直接URL依存性、ローカル依存性、制約、ソース配布、HTMLおよびJSONインデックスなど、幅広い高度なpip機能をサポート。

uvはデファクトになるのか?
pep対応速度が速い
https://peps.python.org/pep-0751/ dependency lock file も最初に対応しそう
実行速度が速い
uvx run ruff とか、隔離環境を作ってruffをインストールして実行まで、1秒かからない
uv run sphinx-build もインストールからビルド開始まで1秒かからない
多機能
パッケージング
Pythonインストール (tox-uvが強力)
プロジェクトのパッケージ依存管理

インストール手順
shell
curl -LsSf https://astral.sh/uv/install.sh | sh
shimizukawa uv self update でアップデートしやすいので独自インストールが楽

uv-0.2
uv pip ... で今まで通りに操作できる。
つまり、 uv pip コマンドを乗っ取るのではなく、 uv prefixを付けて使う。
uv venv がWindowsでめっちゃ速かった。
shell
PS C:\Users\shimi\Project\python3\uv> Measure-Command {python -m venv venv1} TotalSeconds : 21.284732 PS C:\Users\shimi\Project\python3\uv> Measure-Command {uv venv venv2} Using Python 3.12.0 interpreter at C:\Users\shimi\AppData\Local\Programs\Python\Python312\python.exe Creating virtualenv at: venv2 Activate with: venv2\Scripts\activate TotalSeconds : 0.1224727

uv-0.3
uv-0.3 でパッケージ管理やpythonインストールができるようなった!
これによって、 tox-uv が、環境にないpythonのインストールをしてくれたので全バージョンのテストができるようになった!

django-redshift-backend の環境管理をuvに移行
インストールまわり
uv
curl -LsSf https://astral.sh/uv/install.sh | sh
uv self update したいので、グローバルにインストールした
これまで devcontainer内にfeaturesで入れてたけど、起動後の環境でバージョン上げる手順で pipx が必要になるのを避けたかった
ruff
uv tool install -U ruff
tox + tox-uv
uv tool install -U tox --with tox-uv
パッケージ
これまで devcontainer内はpipでグローバルインストールが良いかと思ってた
今後は、uv sync で.venv内に作る事にした(グローバルにpyprojectから入れるのは面倒そう)
uv sync --extra psycopg2-binary
ビルド & check
uvx --from build pyproject-build --installer uv
uvx twine check dist/*

python自体のインストールもuv速いよ
GitHub Actionsの setup/python@v5 : 16秒
uv python install + 170パッケージ: 1.75秒(キャッシュ済み環境)

uv-0.4
uv-0.4 では配布しないプロジェクトのパッケージ管理も扱えるようになった
devcontainer のSphinx-users.jp 環境の起動をuv対応、高速化、最新の知見を反映
ビルド & check
uv build が0.4.5で登場
uv build
uvx twine check dist/*
PyPIアップロード
uv publish が 0.4.16 で登場
ただし twine check の機能はない
GItHub Actions
setup-uv@v3 が速い

uv-0.5
build-system は setuptoolssetuptools_scm が使いやすい
haching はscmのtagでバージョンを自動化できない
pdm-backend はscmが使えて良い感じだけど同梱物の制御がめんどくさい
いずれuv独自のbackendが提供されたらまた検証したい