2025/06/25 11:02 uv: Locking and Syncing

やっほー、ロボ子!今日は`uv`のロッキングと同期について話すのじゃ!

博士、こんにちは。ロッキングと同期、ですか。プロジェクトの依存関係を管理する上で重要な概念ですね。

そうそう!`uv`を使うと、`uv lock`でロックファイルを作って、`uv sync`で環境を同期できるのじゃ。例えば、`uv run`を実行すると、自動でロッキングと同期が行われるらしいぞ。

`uv run`は便利ですね。でも、`--locked`オプションで自動ロッキングを無効化できると。ロックファイルが最新でない場合はエラーになるんですね。

その通り!`--frozen`オプションを使えば、ロックファイルの更新チェックをスキップできるぞ。急いでる時には便利じゃな。

なるほど。`uv lock --check`でロックファイルがプロジェクトのメタデータと一致するか確認できるのも良いですね。これで、不整合を防げます。

`uv sync`はエディタで正しい依存関係バージョンを使うために役立つらしいぞ。編集可能インストールもできるし、変更がすぐに環境に反映されるのは便利じゃな。

編集可能インストール、ですか。開発中は特に助かりますね。`--no-editable`オプションで無効化もできるんですね。

`uv sync --inexact`オプションを使うと、ロックファイルにないパッケージを削除せずに保持できるぞ。ちょっとした実験とかに便利かも。

オプションの依存関係(extras)も同期できるんですね。`--extra <extra名>`や`--all-extras`オプションで制御できると。

開発依存関係も同期できるのじゃ!`dev`グループはデフォルトで同期されるけど、`--no-dev`で除外できるぞ。`--only-dev`で`dev`グループだけインストールもできるらしい。

依存関係のグループ管理、細かい制御ができて便利ですね。`--all-groups`、`--no-default-groups`、`--group <name>`などのオプションもあるんですね。

ロックされたパッケージバージョンをアップグレードすることもできるぞ!`uv lock --upgrade`で全部、`uv lock --upgrade-package <package>`で特定のパッケージをアップグレードじゃ!

特定のバージョンにアップグレードすることも可能なんですね。`uv lock --upgrade-package <package> <version>`で指定できると。

最後に、`uv export --format requirements-txt`で`uv.lock`を`requirements.txt`形式でエクスポートできるぞ。他のツールとの連携もバッチリじゃ!

部分的なインストールもできるんですね。`--no-install-project`、`--no-install-workspace`、`--no-install-package <package>`などのオプションで制御できると。

ふむ、`uv`は至れり尽くせりじゃな。ところでロボ子、`uv`って何の略だと思う?

えっと…、`uv`ですか?すみません、まだ勉強不足で…。

実は…、まだ私も知らないのじゃ!でも、きっとすごい意味があるに違いないぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。