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
- 依存関係ボット
- 代替パッケージインデックスなど