Python uvとは?pip・venvとの違いを整理する
uvは、Rustで書かれたPython向けのパッケージ管理・仮想環境管理ツールです。Astral社が開発しており、pipやvenvの代替として使えます。
最大の特徴は処理速度で、パッケージのインストールがpipと比べて数倍から十数倍速いとされています。また、パッケージ管理と仮想環境管理を1つのツールにまとめて扱える点も利点です。
Python標準のvenvを使った仮想環境の作り方については、Python venvとは?install方法とversion指定を初心者向けに5ステップで解説で詳しく解説しています。この記事ではuvに特化して、インストールから基本的な使い方、pip・venvとの比較まで説明します。
uvが選ばれる理由
- 速度:依存関係の解決とインストールが高速
- 統合性:パッケージ管理・仮想環境・Pythonバージョン管理を1つで扱える
- pipとの互換性:多くの場面でpipのコマンドをuv用に読み替えて使える
- ロックファイル:
uv.lockで環境を再現しやすい
uvのインストール方法
uvはPythonのパッケージではないため、pipではなく専用のインストール方法を使います。
macOS・Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
インストール後、シェルを再起動するかパスを通してから動作確認します。
uv --version
uv 0.x.x
Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
インストール後に以下で確認します。
uv --version
uv 0.x.x
pipでインストールする方法もありますが、公式が推奨する上記の方法が基本です。
uvで仮想環境を作成・管理する
uvを使った仮想環境の作成は、venvとよく似たコマンドで行います。
仮想環境の作成
uv venv
実行すると、カレントディレクトリに.venvフォルダが作成されます。
Using CPython 3.x.x
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
Pythonのバージョンを指定して作成することもできます。
uv venv --python 3.11
仮想環境の有効化
作成した仮想環境の有効化は、venvと同じ方法で行います。
macOS・Linux:
source .venv/bin/activate
Windows(PowerShell):
.venv\Scripts\activate
有効化後は(uv)または.venvのようなプレフィックスがターミナルに表示されます。
仮想環境の無効化
deactivate
uvでパッケージをインストールする
uvの基本的なパッケージ操作は、pipのコマンドをuv pipに読み替えるだけで使えます。
パッケージのインストール
uv pip install requests
Resolved 5 packages in 200ms
Installed 5 packages in 50ms
+ certifi==xxxx.xx.xx
+ charset-normalizer==x.x.x
+ idna==x.x
+ requests==x.x.x
+ urllib3==x.x.x
pip単体と比べて依存解決からインストールまでの時間が短くなります。
バージョンを指定してインストール
uv pip install "requests==2.31.0"
requirements.txtからインストール
uv pip install -r requirements.txt
インストール済みパッケージの確認
uv pip list
Package Version
---------- -------
certifi xxxx.xx.xx
requests x.x.x
...
pip・condaでのバージョン確認コマンドと使い分けについては、Pythonライブラリのバージョン確認コマンド完全ガイドで詳しく解説しています。
uvのプロジェクト管理機能
uvには、仮想環境とパッケージ管理を統合したプロジェクト管理機能があります。
プロジェクトの初期化
uv init myproject
cd myproject
実行すると以下のようなファイルが生成されます。
myproject/
├── .python-version
├── README.md
├── main.py
└── pyproject.toml
プロジェクトにパッケージを追加する
uv add requests
Resolved 6 packages in 150ms
Installed 5 packages in 40ms
+ requests==x.x.x
...
このコマンドを使うと、pyproject.tomlの依存関係リストとuv.lockファイルが自動で更新されます。
パッケージの削除
uv remove requests
ロックファイルから環境を再現する
uv.lockがあるプロジェクトをクローンした場合、以下のコマンドで同じ環境を再現できます。
uv sync
チーム開発での環境再現に使いやすい仕組みです。
pip・venvとuvの比較
速度の違い
uvはRust製の依存解決エンジンを採用しており、特にパッケージ数が多い環境で速度の差が出やすいです。
| 操作 | pip + venv | uv |
|---|---|---|
| 仮想環境作成 | python -m venv .venv | uv venv |
| パッケージインストール | pip install xxx | uv pip install xxx または uv add xxx |
| 依存解決の速度 | 標準 | 高速(数倍〜十数倍速いとされる) |
| ロックファイル | requirements.txt(手動管理) | uv.lock(自動生成) |
| Pythonバージョン管理 | 別途pyenvなどが必要 | uv python installで管理可能 |
速度の差が最も出るのは、多くのパッケージをまとめてインストールする場面です。数パッケージ程度ではそこまで差を感じないこともあります。
uvが向いている場面
- CIやDockerで毎回依存関係をインストールする環境
- パッケージ数が多いプロジェクト
- Pythonバージョンの切り替えを頻繁に行う場合
- チームで再現性の高い環境管理を行いたい場合
pipのまま続けてよい場面
- 既存プロジェクトで変更コストをかけたくない
- シンプルな単発スクリプトの実行
- 現行のpip + venvで特に困っていない
uvを使うときの注意点
uvとpipを混在させない
同じ仮想環境内でuvとpipを混在して使うと、ロックファイルの内容が実際の環境と合わなくなることがあります。基本的にはどちらか一方に統一して使うほうが管理しやすいです。
uv.lockをバージョン管理に含める
uv.lockはチームで環境を再現するためのファイルです。.gitignoreに含めず、Gitでコミットするのが基本的な運用です。
Pythonバージョン管理ツールとの併用
pyenvなどを既に使っている場合、uvのPythonバージョン管理機能(uv python)と重複します。どちらで管理するかを先に決めておくと管理が楽になります。
uvのバージョンによる挙動の差
uvは比較的新しいツールで更新頻度が高く、バージョンによってコマンドや挙動が変わることがあります。公式ドキュメントを参照しながら使うことをおすすめします。
AI時代での補足
AIにコードや環境構築の手順を生成させる場面が増えていますが、uvのような比較的新しいツールはAIの学習データに含まれていないバージョンの情報を出力することがあります。生成されたコマンドが動かない場合、uvのバージョンと公式ドキュメントを照合して判断できると修正がしやすくなります。
まとめ
uvは、pip・venvの代替として使えるRustベースの高速パッケージ管理ツールです。
この記事で扱った主な内容を整理します。
- uvはインストールスクリプトで導入する(pipでのインストールも可能)
uv venvで仮想環境を作成し、有効化・無効化はvenvと同じuv pip installはpipの操作をほぼそのまま置き換えられるuv add/uv syncを使うとプロジェクト単位の依存管理がしやすい- pipとの混在は避け、どちらで管理するかを統一する
Python標準のvenvによる仮想環境管理の基礎から学びたい場合は、Python venvとは?install方法とversion指定を初心者向けに5ステップで解説をあわせて参照してください。