uv について
uv は Python パッケージマネージャー、プロジェクト初期化ツール、環境マネージャーです。uv init でプロジェクト作成、uv add で依存関係をインストール、uv run でスクリプト実行し、クロスプラットフォームで効率的な開発ワークフローを提供します。
主な機能
- 01依存関係管理機能付きで新しい Python プロジェクトを初期化する
- 02プロジェクト依存関係を素早く追加・更新する
- 03隔離された環境で Python スクリプトと応用を実行する
活用シーン
- 01コーディングエージェントがプロジェクト環境を迅速に設定・管理する
- 02開発者が再現可能な Python ワークスペースを作成する
- 03CI/CD パイプラインが依存関係管理とスクリプト実行を自動化する
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にuv --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
uv
Rust で書かれた、非常に高速な Python パッケージおよびプロジェクトマネージャーです。
キャッシュが温まった状態でのTrioの依存関係のインストール。
主な特長
pip、pip-tools、pipx、poetry、pyenv、twine、virtualenvなどを置き換える単一のツールです。pipより10~100 倍高速です。- 包括的なプロジェクト管理と、ユニバーサルなロックファイルを提供します。
- インライン依存関係メタデータに対応し、スクリプトを実行します。
- Python のバージョンをインストールして管理します。
- Python パッケージとして公開されているツールを実行してインストールします。
- 使い慣れた CLI でパフォーマンスを向上できる、pip 互換のインターフェースを備えています。
- 拡張性の高いプロジェクト向けに、Cargo スタイルのワークスペースに対応しています。
- 依存関係を重複排除するグローバルキャッシュにより、ディスク容量を効率的に使用します。
curlまたはpipを使えば、Rust や Python がなくてもインストールできます。- macOS、Linux、Windows に対応しています。
uv は、Ruff と ty の開発元である Astral が支援しています。
インストール
スタンドアロンインストーラーを使って uv をインストールします。
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
または、PyPI からインストールします。
# With pip.
pip install uv
# Or pipx.
pipx install uv
スタンドアロンインストーラー経由でインストールした場合、uv は自身を最新バージョンに更新できます。
uv self update
詳細やその他のインストール方法については、インストールのドキュメントをご覧ください。
ドキュメント
uv のドキュメントは docs.astral.sh/uv でご覧いただけます。
また、コマンドラインのリファレンスドキュメントは uv help で確認できます。
機能
プロジェクト
uv は、ロックファイルやワークスペースなどに対応し、rye や poetry と同様に、プロジェクトの依存関係と環境を管理します。
$ uv init example
Initialized project `example` at `/home/user/example`
$ cd example
$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
+ example==0.1.0 (from file:///home/user/example)
+ ruff==0.5.0
$ uv run ruff check
All checks passed!
$ uv lock
Resolved 2 packages in 0.33ms
$ uv sync
Resolved 2 packages in 0.70ms
Checked 1 package in 0.02ms
使い始めるには、プロジェクトのドキュメントをご覧ください。
uv は、uv で管理されていないプロジェクトのビルドや公開にも対応しています。詳しくは公開ガイドをご覧ください。
スクリプト
uv は、単一ファイルのスクリプトの依存関係と環境を管理します。
新しいスクリプトを作成し、依存関係を宣言するインラインメタデータを追加します。
$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
$ uv add --script example.py requests
Updated `example.py`
次に、隔離された仮想環境でスクリプトを実行します。
$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>
使い始めるには、スクリプトのドキュメントをご覧ください。
ツール
uv は、pipx と同様に、Python パッケージが提供するコマンドラインツールを実行およびインストールします。
uvx(uv tool run のエイリアス)を使用して、一時的な環境でツールを実行します:
$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
+ pycowsay==0.0.0.2
"""
------------
< hello world! >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
uv tool install でツールをインストールします:
$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
+ ruff==0.5.0
Installed 1 executable: ruff
$ ruff --version
ruff 0.5.0
はじめるには、ツールのドキュメントを参照してください。
Python のバージョン
uv は Python をインストールし、バージョン間をすばやく切り替えられるようにします。
複数の Python バージョンをインストールします:
$ uv python install 3.12 3.13 3.14
Installed 3 versions in 972ms
+ cpython-3.12.12-macos-aarch64-none (python3.12)
+ cpython-3.13.9-macos-aarch64-none (python3.13)
+ cpython-3.14.0-macos-aarch64-none (python3.14)
必要に応じて Python バージョンをダウンロードします:
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python [email protected] -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>
現在のディレクトリで特定の Python バージョンを使用します:
$ uv python pin 3.11
Pinned `.python-version` to `3.11`
はじめるには、Python インストールのドキュメントを参照してください。
pip インターフェース
uv は、一般的な pip、pip-tools、virtualenv コマンドのドロップイン代替を提供します。
uv は、依存関係のバージョンオーバーライド、プラットフォーム非依存の解決、再現可能な解決、代替の解決戦略など、高度な機能でこれらのインターフェースを拡張します。
既存のワークフローを変更することなく uv に移行し、10〜100 倍の高速化を体験してください。uv pip インターフェースを使用します。
要件をプラットフォーム非依存の要件ファイルにコンパイルします:
$ uv pip compile requirements.in \
--universal \
--output-file requirements.txt
Resolved 43 packages in 12ms
仮想環境を作成します:
$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
ロックされた要件をインストールします:
$ uv pip sync requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
+ babel==2.15.0
+ black==24.4.2
+ certifi==2024.7.4
...
はじめるには、pip インターフェースのドキュメントを参照してください。
コントリビューション
私たちはあらゆる経験レベルのコントリビューターを支援することに情熱を注いでおり、あなたがプロジェクトに参加してくれることを楽しみにしています。はじめるには、コントリビューションガイドを参照してください。
FAQ
uv はどのように発音しますか?
「you - vee」(/juː viː/)と発音します。
uv はどのように表記すればよいですか?
「uv」のままでお願いします。詳細はスタイルガイドを参照してください。
uv はどのプラットフォームをサポートしていますか?
uv のプラットフォームサポートドキュメントを参照してください。
uv は本番環境で使用できますか?
はい、uv は安定しており、本番環境で広く使用されています。詳細は uv のバージョニングポリシードキュメントを参照してください。
謝辞
uv の依存関係リゾルバーは、内部的に PubGrub を使用しています。PubGrub のメンテナー、特に Jacob Finkelman 氏のサポートに感謝します。
uv の Git 実装は Cargo に基づいています。
uv の最適化の一部は、pnpm、Orogene、Bun で見られた優れた取り組みに着想を得ています。また、Nathaniel J. Smith 氏の Posy から多くを学び、Windows サポートのためにその trampoline を適応させました。
ライセンス
uv は、以下のいずれかの下でライセンスされています
- Apache License, Version 2.0(LICENSE-APACHE または https://www.apache.org/licenses/LICENSE-2.0)
- MIT license(LICENSE-MIT または https://opensource.org/licenses/MIT)
いずれかをお選びください。
明示的に別段の定めをしない限り、Apache-2.0 ライセンスで定義されているように、あなたが uv に含めるために意図的に提出したコントリビューションは、追加の条項や条件なしに、上記のようにデュアルライセンスされます。