uvはRustで書かれた非常に高速なPythonパッケージ&プロジェクトマネージャで、pip
、pipx
、poetry
、pyenv
、twine
、virtualenv
などをこれ1つで代替できます。また、スクリプト実行やCLIツール管理、Pythonバージョン管理にも対応しています。(github.com)
インストール
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
irm https://astral.sh/uv/install.ps1 | iex
またはPyPIから:
pip install uv
# もしくは
pipx install uv
スタンドアロンで入れた場合は uv self update
で自己アップデート可能です。(github.com)
プロジェクト管理
初期化と依存解決
uv init example # プロジェクト雛形を作成
cd example
uv add ruff # パッケージを追加(.venv内にインストール)
uv lock # lockfileを生成
uv sync # lockfileに基づき環境を同期
uv run ruff check # 仮想環境下でコマンドを実行
これにより、poetry
やpip-tools
のような機能を一手に担います。(github.com)
スクリプト実行
スクリプトファイルにインラインで依存を宣言し、隔離環境で実行可能です。
# example.py(先頭に uv メタデータを記述)
# uv: requests
import requests
print(requests.get("https://astral.sh").status_code)
uv run example.py # 必要なパッケージを自動検出・インストールして実行
CLIツール管理
Pythonパッケージ化されたツールを一時実行または常設インストールできます。
uvx pycowsay 'hello!' # uvx は uv tool run のエイリアス
uv tool install ruff # 永続的にインストール
ruff --version
Pythonバージョン管理
複数バージョンのPythonをインストール・切り替えできます。
uv python install 3.10 3.11 3.12 # 各種バージョンを取得
uv venv --python 3.12.0 # 指定版で仮想環境を作成
uv python pin 3.11 # .python-version にバージョン固定
pip互換インターフェース
従来のpipコマンドと同じ感覚で使いつつ、10~100倍の高速化を実現します。
uv pip compile requirements.in \
--universal \
--output-file requirements.txt
uv venv
uv pip sync requirements.txt
ヘルプとドキュメント
uv help # 全コマンド一覧
uv <command> --help # 各コマンドの詳細オプション
詳細は公式ドキュメントをご参照ください:
https://docs.astral.sh/uv (github.com)