超高速Pythonパッケージ・プロジェクトマネージャー「uv」

uv とは

uvRust製の超高速な Python パッケージおよびプロジェクトマネージャー です。pippoetrypyenv など複数のツールを置き換えることを目指しており、高速性統合性が特徴です。

公式サイト: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 dirPython のインストールディレクトリ表示
uv self updateuv 自身のアップデート

その他の特徴

⚡ 高速性

  • pip に比べて 10〜100倍高速 とされる

🔧 単一ツール構成

  • 置き換えるツール例: pip, pip-tools, pipx, poetry, pyenv, twine, virtualenvなど

📁 ユニバーサルロックファイル

  • uv.lock により複数環境にわたる依存関係の一元管理

💾 キャッシュ機能

  • グローバルキャッシュによる効率化(重複排除)
  • CI 対応のキャッシュ制御機能あり

🔐 認証対応

  • Git/HTTP認証、カスタム CA、代替パッケージインデックスのサポート

📦 ビルドと公開

コマンド概要
uv buildPython パッケージをビルド
uv publishパッケージインデックスに公開(例: PyPI)

🔄 依存関係解決

  • 複数のプラットフォーム、マルチバージョン、プリリリース対応
  • 解決戦略は --fork-strategy でカスタマイズ可能

⚙ 設定方法

  • pyproject.toml[tool.uv] セクション
  • 環境変数による設定も可能

🔗 統合対応ツール・サービス

  • Docker
  • Jupyter
  • GitHub Actions / GitLab CI/CD
  • Pre-commit
  • PyTorch / FastAPI
  • AWS Lambda
  • 依存関係ボット
  • 代替パッケージインデックスなど