Open3

uvを使いたい

be3be3

poetry+pyenvでやっていた管理をuvだけで置き換えられそう。雑メモを残していく。uvのキャッチアップついでに復習や補填を兼ねる。
https://zenn.dev/dena/articles/python_env_with_uv

We first released uv in February as a drop-in replacement for common pip workflows.
Today, we're announcing a series of features that extend uv beyond a pip alternative, and into an end-to-end solution for managing Python projects, command-line tools, single-file scripts, and even Python itself.

https://astral.sh/blog/uv-unified-python-packaging

be3be3

実際に導入してみる。READMEを参考にしてパッケージ管理やプロジェクト単位でランタイムの切り替えができることを確認した。
自分のローカルPC全体だと3.11だったが、uvプロジェクトだと3.12の環境で実行できた。
あと、pipとの互換性についても記述されていて、pyproject.tomlの内容に基づいてrequirements.txtを吐き出すことも可能だった。
https://github.com/astral-sh/uv/tree/main

be3be3

requirements.inが何か分かってなかったので調べた。
requirementx.inはトップレベルの依存関係だけを記述したもので、requirements.txtは全ての依存関係を記述したものっぽい。
https://qiita.com/baku2san/items/ba299f4493d6b20e66de

ただし、requirements.txtには全ての依存関係がリストアップされているがバージョンが範囲指定されていたりと一意にバージョンが定まった記述でないこともあり、ロックファイルとは厳密には言えないっぽい。
https://zenn.dev/yhay81/articles/yhay81-202102-piplock
プロジェクト固有のバージョンの組み合わせが一意になるよう別途ロックファイルを吐き出しておくことで、プロジェクトメンバー間で同一の環境(少なくとも依存関係に関しては)を保証する。