UV パッケージマネージャ

uvはRustで書かれた非常に高速なPythonパッケージ&プロジェクトマネージャで、pippipxpoetrypyenvtwinevirtualenvなどをこれ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         # 仮想環境下でコマンドを実行

これにより、poetrypip-toolsのような機能を一手に担います。(github.com)

スクリプト実行

スクリプトファイルにインラインで依存を宣言し、隔離環境で実行可能です。

# example.py先頭に uv メタデータを記述
# uv: requests
import requests
print(requests.get("https://astral.sh").status_code)
uv run example.py        # 必要なパッケージを自動検出インストールして実行

(github.com)

CLIツール管理

Pythonパッケージ化されたツールを一時実行または常設インストールできます。

uvx pycowsay 'hello!'    # uvx  uv tool run のエイリアス
uv tool install ruff     # 永続的にインストール
ruff --version

(github.com)

Pythonバージョン管理

複数バージョンのPythonをインストール・切り替えできます。

uv python install 3.10 3.11 3.12   # 各種バージョンを取得
uv venv --python 3.12.0            # 指定版で仮想環境を作成
uv python pin 3.11                 # .python-version にバージョン固定

(github.com)

pip互換インターフェース

従来のpipコマンドと同じ感覚で使いつつ、10~100倍の高速化を実現します。

uv pip compile requirements.in \
    --universal \
    --output-file requirements.txt
uv venv
uv pip sync requirements.txt

(github.com)

ヘルプとドキュメント

uv help                   # 全コマンド一覧
uv <command> --help       # 各コマンドの詳細オプション

詳細は公式ドキュメントをご参照ください:
https://docs.astral.sh/uv (github.com)