uv addとuv pip installの違い
uv addはpyproject.toml使っている時とかに使う
高レベルAPI
uv pip installは低レベルのことをしたいときに使う
pyproject.tomlを使わないときとかに使える?
https://github.com/astral-sh/uv/issues/9219
https://notebooklm.google.com/notebook/04498cba-48c2-4df9-b919-0efb02fca474
takker.icon
uv addはpyproject.tomlを使うときに使う。
uv pip installはpyproject.tomlを使わないときや低レベルなことをしたいときに使う。
この認識で大雑把にあってる?
NotebookLM.icon
はい、その認識で大筋であっています。ソース情報に基づいて、uv add と uv pip install の違いについて詳しく説明します。
uv には主に2つの異なるAPIセットがあります。
1. uv pip API: uv pip install, uv pip remove など。
2. Project API: uv add, uv run, uv sync, uv lock など。
これらの違いは以下の通りです。
uv pip install:
これは**「低レベル」**なAPIと見なされています。
従来の pip CLIに似た操作を提供します。
pyproject.toml を必須としません。
仮想環境を柔軟に操作できます。特にルールはありません。
既存のプロジェクトで、すでに pip に基づいたワークフローがある場合に、pip install を uv pip install に置き換えることで容易に採用できることを意図しています。
デフォルトでは、作業ディレクトリ内の仮想環境を変更します(別の環境がactivateされていない限り)。
指定されたパッケージの最新バージョンをインストールしようとします。
uv pip install は、自身の環境にのみインストールされますが、uv pip install は他の環境をターゲットにすることもできます。
uv add:
これは**「高レベル」**なProject APIの一部です。
特定のプロジェクトを管理するために設計されており、pyproject.toml の使用が必須です。
pyproject.toml で定義された依存関係に基づいて、環境が常に同期していることを保証します。
uv add は、依存関係を pyproject.toml に追加し、uv.lock ファイルを更新します。
uv.lock ファイルは、ユニバーサルな解決に基づいて作成され、異なるプラットフォーム間で移植可能です。これは、プロジェクトで作業する全員に対して依存関係が固定されることを保証します。
Project API(uv addを含む)は「uvネイティブ」のワークフローを反映しています。
新しいプロジェクトを開始する場合は、Project APIの使用が推奨されます。
uv add にはインデックスを指定するためのフラグ(--index, --default-index)がありますが、通常は pyproject.toml に記述することが推奨されています。
したがって、あなたの理解である「uv addはpyproject.tomlを使うときに使う」「uv pip installはpyproject.tomlを使わないときや低レベルなことをしたいときに使う」というのは、ソースの記述と一致しており、大まかに正確です。
簡単にまとめると:
uv add はプロジェクト指向で、pyproject.toml に依存関係を定義し、環境をプロジェクトの状態と同期させるために使用します。これは「uvネイティブ」の推奨される方法です。
uv pip install は環境指向で、従来の pip に似ており、pyproject.toml を使わずに仮想環境を直接操作する柔軟な方法です。
これにより、uv add と uv pip install の使い分けがより明確になるかと思います。
#2025-06-08 15:30:39