uv

バージョン管理Pythonパッケージ管理開発環境Rust高速化

GitHub概要

astral-sh/uv

An extremely fast Python package and project manager, written in Rust.

スター70,583
ウォッチ133
フォーク2,139
作成日:2023年10月2日
言語:Rust
ライセンス:Apache License 2.0

トピックス

packagingpythonresolveruv

スター履歴

astral-sh/uv Star History
データ取得日時: 2025/10/22 04:10

言語バージョン管理ツール

uv

概要

uvは、Rustで実装された超高速なPythonパッケージ・バージョン管理ツールです。pip、pip-tools、virtualenv、pyenvの機能を統合し、従来のツールと比較して10-100倍の高速化を実現しています。2024年にAstralチームによって開発され、Pythonエコシステムの新しいスタンダードとして急速に普及しています。

詳細

主な特徴

  • 圧倒的な高速性: Rust実装により10-100倍の速度向上
  • オールインワン: パッケージ管理、仮想環境、Pythonバージョン管理を統合
  • Python自動インストール: 必要なPythonバージョンを自動的にダウンロード・インストール
  • 単一バイナリ: Python依存なしの静的バイナリで配布
  • 互換性: pip、pip-tools、virtualenvのドロップイン置換として使用可能
  • プロジェクト管理: pyproject.tomlによる現代的なプロジェクト管理

アーキテクチャ

uvはRustで実装されており、Python自体に依存しません。python-build-standaloneプロジェクトのディストリビューションを使用してPythonをインストールし、効率的な依存関係解決アルゴリズムを採用しています。

統合機能

  • pip機能: パッケージのインストール、アンインストール、アップデート
  • pip-tools機能: requirements.txtからの依存関係同期
  • virtualenv機能: 仮想環境の作成と管理
  • pyenv機能: 複数のPythonバージョンの管理
  • pipx機能: CLIツールの独立環境でのインストール

メリット・デメリット

メリット

  • 超高速: 従来のツールと比較して劇的な速度向上
  • 統合環境: 複数のツールを1つで置き換え可能
  • ゼロ設定: Python未インストールでも動作開始可能
  • 再現性: プラットフォーム独立の依存関係解決
  • メモリ効率: Rust実装による低メモリ使用量
  • アクティブな開発: Astralチームによる頻繁なアップデート

デメリット

  • 新しいツール: 2024年リリースで実績がまだ少ない
  • グローバルPython非対応: uvでインストールしたPythonはグローバルに使用不可
  • 非公式ビルド: 公式Python配布ではなくpython-build-standaloneを使用
  • エコシステム: プラグインやサードパーティツールがまだ少ない
  • 学習曲線: 新しいコマンド体系への適応が必要

参考ページ

書き方の例

インストール

# macOS/Linux(スタンドアロンインストーラー)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows(PowerShell管理者権限)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# Homebrew(macOS)
brew install uv

# pipxを使用
pipx install uv

# pipを使用(推奨されない)
pip install uv

Pythonバージョン管理

# 利用可能なPythonバージョンの確認
uv python list

# 特定のPythonバージョンをインストール
uv python install 3.12.0
uv python install 3.11 3.10  # 複数バージョン同時インストール

# プロジェクトでPythonバージョンを固定
uv python pin 3.11

# 現在のPythonバージョンを確認
uv python show

プロジェクトの初期化と管理

# 新規プロジェクトの作成
uv init my-project
cd my-project

# プロジェクト構造
# ├── .gitignore
# ├── .python-version
# ├── README.md
# ├── hello.py
# └── pyproject.toml

# 依存関係の追加
uv add requests numpy pandas

# 開発依存関係の追加
uv add --dev pytest black ruff

# 依存関係の同期
uv sync

# プロジェクトの実行
uv run python hello.py

仮想環境の作成と管理

# 仮想環境の作成(Pythonバージョン指定)
uv venv --python 3.12

# デフォルトPythonで仮想環境作成
uv venv

# 仮想環境の有効化
# Linux/macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate

# 仮想環境内でのパッケージインストール
uv pip install django flask

# requirements.txtからのインストール
uv pip sync requirements.txt

pip互換コマンド

# パッケージのインストール
uv pip install requests

# requirements.txtからのインストール
uv pip install -r requirements.txt

# パッケージのアップグレード
uv pip install --upgrade requests

# インストール済みパッケージの表示
uv pip list

# パッケージの削除
uv pip uninstall requests

# requirements.txtの生成
uv pip freeze > requirements.txt

ツールの実行(pipx代替)

# 一時的な環境でツールを実行
uvx ruff check .
uvx black --check .

# エイリアス形式
uv tool run pytest

# 特定バージョンのツールを実行
uvx [email protected] check .

# ツールのインストール
uv tool install ruff
uv tool install black

高度な使い方

# プラットフォーム独立の解決
uv pip compile requirements.in --universal

# 依存関係のオーバーライド
uv add torch --override torch==2.0.0

# キャッシュのクリア
uv cache clean

# 自己アップデート
uv self update

# 設定の確認
uv --version
uv --help