uv
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
スター履歴
データ取得日時: 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