mcpField
U
uv

uv

公式おすすめ
docs.astral.sh開発ツール91.3kuv今日更新
リポジトリ公式サイト

uv について

uv は Python パッケージマネージャー、プロジェクト初期化ツール、環境マネージャーです。uv init でプロジェクト作成、uv add で依存関係をインストール、uv run でスクリプト実行し、クロスプラットフォームで効率的な開発ワークフローを提供します。

主な機能

  1. 01依存関係管理機能付きで新しい Python プロジェクトを初期化する
  2. 02プロジェクト依存関係を素早く追加・更新する
  3. 03隔離された環境で Python スクリプトと応用を実行する

活用シーン

  1. 01コーディングエージェントがプロジェクト環境を迅速に設定・管理する
  2. 02開発者が再現可能な Python ワークスペースを作成する
  3. 03CI/CD パイプラインが依存関係管理とスクリプト実行を自動化する

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install uv

インストール後にuv --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
uv init
02
uv add requests
03
uv run python main.py

詳細

uv

最新の PyPI バージョン サポート対象の Python バージョン Discord

Rust で書かれた、非常に高速な Python パッケージおよびプロジェクトマネージャーです。

ベンチマーク結果を示す棒グラフです。

キャッシュが温まった状態でのTrioの依存関係のインストール。

主な特長

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-2.0 ライセンスで定義されているように、あなたが uv に含めるために意図的に提出したコントリビューションは、追加の条項や条件なしに、上記のようにデュアルライセンスされます。

コメント