Python 開発者はもう pip、poetry、pipenv の間で迷う必要がありません。Ruff を手がける Astral チームが開発した uv が、Python パッケージ管理の世界を驚異的なスピードで変えようとしています。
uv とは?
uv は Rust で書かれた Python のパッケージ・プロジェクト管理ツールです。設計目標はただ一つ:究極のスピード。
| 機能 | 説明 |
|---|---|
| パッケージインストール | pip 互換の依存解決とインストール |
| プロジェクト管理 | poetry/pipenv の代替、仮想環境と依存関係の管理 |
| キャッシュ機構 | グローバルキャッシュ + ハードリンクで秒単位で再インストール |
| 複数 Python バージョン | 複数の Python バージョンを自動インストール・管理 |
| 設定不要のワークフロー | uv init + uv add だけで始められる |
| ライセンス | MIT(完全オープンソース) |
Astral チーム(Ruff の作者でもある)は、Rust による高性能ツールチェーンの経験を uv にすべて注ぎ込みました。その結果:pip より 10〜100 倍高速。
📦 GitHub: https://github.com/astral-sh/uv ⭐ Stars: 50k+(2026 年中旬) 📄 License: MIT
uv のインストール
uv のインストールは驚くほど簡単。一行のコマンドで完了します:
# 公式推奨方法 — インストールスクリプト
curl -LsSf https://astral.sh/uv/install.sh | sh
インストール後の確認:
uv --version
# uv 0.7.x
Homebrew(macOS/Linux)を使う場合:
brew install uv
pipx でインストールする場合:
pipx install uv
クイックスタート:最初のプロジェクトを作ろう
プロジェクトの初期化
# 新規プロジェクトを作成(pyproject.toml + 仮想環境を自動生成)
uv init my-app
cd my-app
生成されるファイル構成:
my-app/
├── .python-version # Python バージョンを固定
├── pyproject.toml # プロジェクト設定
├── README.md
├── main.py
└── uv.lock # 依存関係ロックファイル
pyproject.toml の中身はとてもシンプル:
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
依存関係の追加
# 本番依存関係を追加(自動解決 + インストール + ロック)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"
# 開発依存関係を追加
uv add --dev pytest ruff mypy
一つのコマンドで:依存解決 → ダウンロード → インストール → uv.lock の更新まで、通常数秒で完了します。
コードの実行
# 仮想環境内でスクリプトを実行
uv run python main.py
# インストール済みツールを実行
uv run pytest
uv run ruff check .
uv run はプロジェクトの仮想環境を自動的に有効化してくれるので、source .venv/bin/activate を手動で実行する必要はありません。
高度な機能
複数 Python バージョンの管理
uv には Python バージョンマネージャーが組み込まれており、複数の Python バージョンを自動的にダウンロード・管理できます:
# インストール済みの Python バージョンを確認
uv python list
# 特定のバージョンの Python をインストール
uv python install 3.13
uv python install 3.11
# プロジェクトで使う Python バージョンを指定
uv python pin 3.13
# 特定のバージョンで実行
uv run --python 3.11 python main.py
これで Python 開発者を長年悩ませてきた問題が解決します — pyenv はもう必要ありません。
ワークスペース
プロジェクトに複数のパッケージがある場合、uv のワークスペース機能が便利です:
# ワークスペースを初期化
uv init --package packages/core
uv init --package packages/cli
pyproject.toml:
[tool.uv.workspace]
members = ["packages/*"]
スクリプト管理
uv では pyproject.toml でスクリプトのエイリアスを定義できます:
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"
そして直接実行:
uv run dev
uv run test
CI/CD 統合
GitHub Actions で uv を使う例:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --frozen
- name: Run tests
run: uv run pytest
enable-cache: true を設定すると uv のパッケージダウンロードがキャッシュされ、CI の実行速度が大幅に向上します。
pip/poetry とのスピード比較
以下は Astral 公式が提供するベンチマークデータ(Django とその全依存関係のインストール):
| ツール | 初回インストール | キャッシュインストール |
|---|---|---|
| pip | ~15s | ~3s |
| poetry | ~20s | ~5s |
| uv | ~1.5s | ~0.3s |
uv が高速な理由:
- Rust 実装 — 依存解決エンジンが Rust で書かれており、Python より数桁高速
- グローバルキャッシュ — ダウンロードしたパッケージをグローバルにキャッシュし、プロジェクト間でハードリンクにより共有
- 並列ダウンロード — 複数のパッケージを同時にダウンロードし、ネットワーク帯域を最大限に活用
- スマートキャッシュ — 解決結果もキャッシュされるため、再計算を回避
pip/poetry からの移行
pip からの移行
# 既存の requirements.txt でプロジェクトを作成
uv pip install -r requirements.txt
# または新規プロジェクトを作成してからインポート
uv init
uv add -r requirements.txt
poetry からの移行
# pyproject.toml から直接依存関係を同期
uv sync
# 再ロックが必要な場合
uv lock
uv は pyproject.toml 形式に完全互換なので、ほとんどの poetry プロジェクトはそのまま切り替えられます。
便利なコマンド一覧
# プロジェクト管理
uv init <name> # 新規プロジェクトを作成
uv add <package> # 依存関係を追加
uv remove <package> # 依存関係を削除
uv sync # 依存関係を同期(pip install -e . と同等)
uv lock # 依存関係を再ロック
# 実行
uv run <command> # 仮想環境内でコマンドを実行
uv tool run <tool> # 一時的なツールを実行(pipx run と同等)
uv tool install <tool> # グローバルツールをインストール
# Python 管理
uv python install <ver> # Python バージョンをインストール
uv python list # インストール済みバージョンを一覧表示
uv python pin <ver> # プロジェクトの Python バージョンを固定
# キャッシュ
uv cache dir # キャッシュディレクトリを確認
uv cache clean # キャッシュをクリーンアップ
まとめ
uv は Python 開発者の新しい標準ツールになりつつあります。Ruff チームによって開発され、超高速で、API デザインもシンプル、そして完全オープンソースです。
おすすめの利用シーン:
- ✅ 新規プロジェクト —
uv initですぐ始められる - ✅ CI/CD — キャッシュに優しく、ビルド速度が大幅に向上
- ✅ 複数 Python バージョンを使うプロジェクト — バージョン管理が内蔵
- ✅ poetry/pipenv からの移行 — pyproject.toml に互換
まだ pip + venv や poetry を使っているなら、ぜひ uv を試してみてください。秒単位のインストール速度を一度体験したら、もう戻れません。
🔗 公式ドキュメント: https://docs.astral.sh/uv/ 🔗 GitHub: https://github.com/astral-sh/uv