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 のインストールは驚くほど簡単。一行のコマンドで完了します:

BASH
# 公式推奨方法 — インストールスクリプト
curl -LsSf https://astral.sh/uv/install.sh | sh

インストール後の確認:

BASH
uv --version
# uv 0.7.x

Homebrew(macOS/Linux)を使う場合:

BASH
brew install uv

pipx でインストールする場合:

BASH
pipx install uv

クイックスタート:最初のプロジェクトを作ろう

プロジェクトの初期化

BASH
# 新規プロジェクトを作成(pyproject.toml + 仮想環境を自動生成)
uv init my-app
cd my-app

生成されるファイル構成:

my-app/
├── .python-version    # Python バージョンを固定
├── pyproject.toml     # プロジェクト設定
├── README.md
├── main.py
└── uv.lock            # 依存関係ロックファイル

pyproject.toml の中身はとてもシンプル:

TOML
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []

依存関係の追加

BASH
# 本番依存関係を追加(自動解決 + インストール + ロック)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"

# 開発依存関係を追加
uv add --dev pytest ruff mypy

一つのコマンドで:依存解決 → ダウンロード → インストール → uv.lock の更新まで、通常数秒で完了します。

コードの実行

BASH
# 仮想環境内でスクリプトを実行
uv run python main.py

# インストール済みツールを実行
uv run pytest
uv run ruff check .

uv run はプロジェクトの仮想環境を自動的に有効化してくれるので、source .venv/bin/activate を手動で実行する必要はありません。

高度な機能

複数 Python バージョンの管理

uv には Python バージョンマネージャーが組み込まれており、複数の Python バージョンを自動的にダウンロード・管理できます:

BASH
# インストール済みの 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 のワークスペース機能が便利です:

BASH
# ワークスペースを初期化
uv init --package packages/core
uv init --package packages/cli

pyproject.toml:

TOML
[tool.uv.workspace]
members = ["packages/*"]

スクリプト管理

uv では pyproject.toml でスクリプトのエイリアスを定義できます:

TOML
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"

そして直接実行:

BASH
uv run dev
uv run test

CI/CD 統合

GitHub Actions で uv を使う例:

YAML
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 が高速な理由:

  1. Rust 実装 — 依存解決エンジンが Rust で書かれており、Python より数桁高速
  2. グローバルキャッシュ — ダウンロードしたパッケージをグローバルにキャッシュし、プロジェクト間でハードリンクにより共有
  3. 並列ダウンロード — 複数のパッケージを同時にダウンロードし、ネットワーク帯域を最大限に活用
  4. スマートキャッシュ — 解決結果もキャッシュされるため、再計算を回避

pip/poetry からの移行

pip からの移行

BASH
# 既存の requirements.txt でプロジェクトを作成
uv pip install -r requirements.txt

# または新規プロジェクトを作成してからインポート
uv init
uv add -r requirements.txt

poetry からの移行

BASH
# pyproject.toml から直接依存関係を同期
uv sync

# 再ロックが必要な場合
uv lock

uv は pyproject.toml 形式に完全互換なので、ほとんどの poetry プロジェクトはそのまま切り替えられます。

便利なコマンド一覧

BASH
# プロジェクト管理
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