uv とは
uv は Rust製の超高速な Python パッケージおよびプロジェクトマネージャー です。pip、poetry、pyenv など複数のツールを置き換えることを目指しており、高速性と統合性が特徴です。
公式サイト:https://docs.astral.sh/uv
主な機能
🐍 Python バージョンのインストールと管理
- システムの Python を自動検出・利用。
- 必要に応じて Python バージョンを自動インストール。
- サポート: CPython/PyPy/GraalPy
- 利用コマンド例:
- uv python install 3.12: 特定バージョンのインストール
- uv python list: 利用可能なバージョンの一覧表示
 
- オプション・設定:
- --python/- UV_PYTHON: 使用する Python を指定
- --managed-python/- --no-managed-python: マネージド or システム Python の優先設定
 
▶ スクリプトの実行
- .pyファイルまたは URL 経由で Python スクリプトを実行
- コマンド: uv run <script.py | https://...>
- 依存関係をスクリプト内にインラインで記述可能(隔離環境でインストール)
- 依存の追加・削除機能もあり
📁 プロジェクト管理
| コマンド | 説明 | 
|---|
| uv init | 新しいプロジェクトを作成 | 
| uv init --package | パッケージ化されたプロジェクトを作成 | 
| uv add | 依存関係の追加 | 
| uv remove | 依存関係の削除 | 
| uv sync | 環境と依存関係を同期 | 
| uv lock | ロックファイル(uv.lock)の作成 | 
| uv tree | 依存ツリーの表示 | 
| uv run | プロジェクト環境内でコマンド実行 | 
- pyproject.tomlがプロジェクトの定義ファイルとして使用されます。
- requirements.inにも対応。
🛠 ツールの実行とインストール
- 一時環境で CLI ツール実行: uvx/uv tool run
- ツールのインストール: uv tool install
- ツールのアンインストール: uv tool uninstall
- インストール先は隔離された仮想環境
📦 pip インターフェース機能(互換)
| コマンド | 説明 | 
|---|
| uv venv | 仮想環境の作成 | 
| uv pip install | パッケージのインストール | 
| uv pip list | インストール済パッケージ一覧 | 
| uv pip freeze | バージョン付きで一覧表示 | 
| uv pip show | パッケージ情報の表示 | 
| uv pip check | 依存関係の整合性検証 | 
- 仮想環境の使用が基本(–system, –python で変更可)
- --break-system-packagesでシステム Python に直接インストールも可能(注意要)
🧰 ユーティリティ機能
| コマンド | 概要 | 
|---|
| uv cache clean/prune/dir | キャッシュの管理 | 
| uv tool dir | ツールの保存ディレクトリ表示 | 
| uv python dir | Python のインストールディレクトリ表示 | 
| uv self update | uv 自身のアップデート | 
その他の特徴
⚡ 高速性
🔧 単一ツール構成
- 置き換えるツール例: pip,pip-tools,pipx,poetry,pyenv,twine,virtualenvなど
📁 ユニバーサルロックファイル
- uv.lockにより複数環境にわたる依存関係の一元管理
💾 キャッシュ機能
- グローバルキャッシュによる効率化(重複排除)
- CI 対応のキャッシュ制御機能あり
🔐 認証対応
- Git/HTTP認証、カスタム CA、代替パッケージインデックスのサポート
📦 ビルドと公開
| コマンド | 概要 | 
|---|
| uv build | Python パッケージをビルド | 
| uv publish | パッケージインデックスに公開(例: PyPI) | 
🔄 依存関係解決
- 複数のプラットフォーム、マルチバージョン、プリリリース対応
- 解決戦略は --fork-strategyでカスタマイズ可能
⚙ 設定方法
- pyproject.tomlの- [tool.uv]セクション
- 環境変数による設定も可能
🔗 統合対応ツール・サービス
- Docker
- Jupyter
- GitHub Actions / GitLab CI/CD
- Pre-commit
- PyTorch / FastAPI
- AWS Lambda
- 依存関係ボット
- 代替パッケージインデックスなど