uvとpipの違いは?uv add・uv pip installの使い分けと移行手順
目的別にコマンドを選ぶ
| やりたいこと | pip中心の運用 | uvの運用 |
|---|---|---|
| 仮想環境を作る | python -m venv .venv | uv venv |
| 環境にパッケージを入れる | python -m pip install requests | uv pip install requests |
| プロジェクトの依存を追加する | 依存宣言の管理方法を別途決める | uv add requests |
| 記録した依存に環境を合わせる | 固定したrequirementsなどから導入 | uv sync |
| プロジェクト内で実行する | 対象環境のPythonを使う | uv run python main.py |
pip側のコマンドは、対象の仮想環境を有効にした状態を想定しています。uvのプロジェクトコマンドはpyproject.tomlのあるプロジェクト内で使います。
uv addとuv pip installを混同しないことが大切です。 uvでプロジェクト管理をしているのにuv pip installだけで追加すると、依存宣言に残りません。後のuv syncで、既定では、ロックにないパッケージが削除されます。
requirements.txtから段階的に移す
uvを公式のインストール手順で導入済みとして、既存プロジェクトの検証用コピーで試します。既存の.venvを上書きしないよう、空の作業環境を使ってください。
uv venv
uv pip install -r requirements.txt
uv pip check
これはインストール手段を変更する例です。uv pip checkは依存の整合性を確認しますが、アプリの動作テストの代わりにはなりません。
プロジェクト管理も移す場合は、既存のpyproject.tomlを確認し、なければuv initで作成したうえで次を使います。
uv add -r requirements.txt
uv sync --locked
pip freeze由来のファイルには間接依存も含まれます。そのまま取り込むと全件が直接依存として登録されるため、アプリが実際に使うパッケージと開発用ツールを整理してください。Poetryなどの独自設定は、自動で同じ意味に移るとは限りません。
CIで再現性を確かめる
pyproject.tomlとuv.lockをGitで共有し、CIで使うPython・uvの版もそろえます。--lockedはロックの更新が必要ならエラーにします。一方、--frozenはロックの新しさの確認を省いて既存ロックを使うため、同じ意味ではありません。
速度を比較するなら、インストール工程だけでなくテストを含むCI全体も測りましょう。移行判断の基準は「何倍速いか」だけでなく、設定の保守性と既存パッケージの互換性です。
プロジェクトとCLIツールは別の置き場所にする
アプリが利用するrequestsはuv add requestsでプロジェクトに登録します。一方、複数のプロジェクトで使うコマンドを試したいなら、uvx ruff check .のようにツール用の隔離環境で実行する方法があります。uvxはuv tool runの別名で、プロジェクトの依存宣言を増やさずに使えます。チームで同じ版を使いたい開発ツールは、uv add --dev ruffで管理してuv run ruff check .を使う方法もあります。
なお、uv syncは既定でロックにないパッケージを削除しますが、uv runの既定の同期は余分なパッケージを残します。「コマンドが動いた」だけで環境が完全にロックと一致したとは判断せず、CIで何を同期するかを決めましょう。
選び方のまとめ
pipの既存運用に困っていなければ、そのままでも構いません。まず導入時間を短くしたいならuv pipを検証し、依存の追加・ロック・実行まで運用をそろえたいならuvのプロジェクト管理を試す、という順番が選びやすいです。
次に読む記事を、目的で選ぶ
参考資料
確認日:2026年10月4日。以下は仕様の根拠であり、本記事独自の性能比較ではありません。
-
pip — pip install:パッケージ・requirementsからのインストール。
-
uv — Working on projects:プロジェクト、ロックファイル、実行の役割。
-
uv — Managing dependencies:uv addとrequirementsからの依存追加。
-
uv — Locking and syncing:自動同期、余分なパッケージ、lockedとfrozen。
-
uv — Compatibility with pip:設定、仮想環境、配布元の選択に関する相違点。
-
uv — Using tools:uvxの隔離環境とプロジェクト内の開発ツール。