uv - 新しいPythonパッケージ、プロジェクト、および環境マネージャー
Python uvの良い点
Python uv は、Rustで書かれた現代的で高性能なPythonパッケージおよびプロジェクトマネージャーです。pip
、pip-tools
、virtualenv
、pipx
、pyenv
などの従来のPythonパッケージ管理ツールの代替品として設計され、Python開発ワークフローを簡素化し高速化することを目的としています。
uvは、人気のあるPythonリントルRuffを開発したAstralチームによって開発され、Pythonエコシステムの一般的な課題(遅いインストール、依存関係の競合、複雑な環境管理など)を解決することを目的としています。
uvの主な機能
- 例外的な速度: uvは従来のツールよりもはるかに高速で、キャッシュなしで8~10倍、ウォームキャッシュで80~115倍の速度を提供します。
- オールインワンツール: パッケージインストール、依存関係解決、仮想環境管理、Pythonバージョン管理、プロジェクトスキャフォールディング、スクリプト実行を1つのツールで統合しています。
- 互換性: pip互換のコマンドラインインターフェースを提供し、学習コストを抑えて簡単に採用できます。
- 堅牢な依存関係管理: 正確な依存関係解決とロックファイルサポートを提供し、再現可能な環境を実現します。
- 自動仮想環境: 仮想環境を自動的に作成および管理し、手動設定を削減します。
- クロスプラットフォームサポート: macOS、Linux、Windowsで動作します。
- スタンドアロンインストール: PythonやRustを必要とせず、簡単なインストーラーまたは
curl
を使用してインストールできます。
なぜuvを使うのかまだわからない?
- パフォーマンス: パッケージインストールと依存関係解決の時間を大幅に短縮します。
- シンプルさ: 複数のツールを1つに統合し、プロジェクトの設定と管理をストリームライン化します。
- 信頼性: 明確なエラーメッセージと競合解決を提供し、一貫した再現可能な環境を提供します。
- 現代的な標準: プロジェクト設定に
pyproject.toml
をサポートし、現在のPythonパッケージ標準に準拠しています。
例用途
何か興奮することを試してみましょう!
- 新しいプロジェクトの開始:
uv init myproject
cd myproject
uv add requests
uv run python script.py
これはプロジェクトディレクトリを作成し、仮想環境を設定し、依存関係をインストールし、隔離された環境でスクリプトを実行します。
- インライン依存関係を持つスクリプトの管理:
uv add --script script.py requests
uv run script.py
uvは別々の要件ファイルなしで単一ファイルスクリプトの依存関係を管理できます。
従来のツールとの比較
機能 | uv | pip/virtualenv | Poetry |
---|---|---|---|
速度 | とても速い | 遅い | 中程度 |
仮想環境 | 自動 | 手動 | 自動 |
依存関係解決 | 高度 | 基本 | 高度 |
Pythonバージョン管理 | はい | いいえ(pyenvが必要) | いいえ |
ロックファイルサポート | はい | いいえ(pip-toolsが必要) | はい |
スクリプト実行 | 統合 | いいえ | 限定 |
UVをシステムにインストールして使用する方法
uvをシステムにインストールして使用するには、以下の簡単な手順に従ってください。
インストール
- スタンドアロンインストーラー(推奨)
- Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
または、wget
を好む場合:
wget -qO- https://astral.sh/uv/install.sh | sh
- Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 特定のバージョン: URLにバージョンを含めることで特定のバージョンを要求できます。例:
https://astral.sh/uv/0.7.15/install.sh
。
- 代替: pipを使用してインストール(Pythonがインストールされている場合)
pip install uv
注意: システム全体のアクセスを必要とする場合を除き、この方法はシステムPython環境を混乱させる可能性があるため、推奨されません。
- pipxを使用してインストール(ユーザー全体の隔離されたインストール)
pipx install uv
この方法は、pipx
を既に使用している場合、グローバルアクセスにとってよりクリーンです。
はじめる
インストールを確認するには、以下を実行します:
uv
uvがインストールされ、使用可能であることを確認するヘルプメニューが表示されるはずです。
仮想環境を作成してアクティブ化する
- venvを作成する:
uv venv test
- Linux/macOSでアクティブ化する:
source test/bin/activate
- Windowsでアクティブ化する:
.\test\Scripts\activate
これで、uv pip install
を使用してこの環境にパッケージをインストールできます。
新しいプロジェクトを初期化する
uv init
これはプロジェクト用のpyproject.toml
と.gitignore
を作成します。
依存関係を追加する
パッケージを追加する:
uv add
これはpyproject.toml
を更新し、ロックファイルを生成/更新します。
依存関係を同期する
環境にすべての依存関係をインストールする:
uv sync
または、pip互換インターフェースを使用する:
uv pip install
これはロックファイルに従ってすべての依存関係がインストールされることを確保します。
スクリプトを実行する
以下を使用します:
uv run script.py
これはスクリプトの環境と依存関係を自動的に管理します。
シェル統合(オプション)
よりスムーズなワークフローのために、.zshrc
または.bashrc
にシェル統合を追加して、デフォルトの仮想環境を自動的にアクティブ化し、pip
をuv pip
にエイリアス化できます。
これらの手順に従うことで、uvをインストールし、Pythonプロジェクトを高速かつ簡単に管理できるようになります。
特定のPythonバージョンをインストールする
uvを使用して特定のPythonバージョンをインストールし、プロジェクトで管理できます。
- 最新の安定版Pythonをインストールする:
このコマンドは、利用可能な最新の安定版Pythonをダウンロードしてインストールします。uv python install
- 特定のバージョンをインストールする:
これはPython 3.12(例: 3.12.3)の最新パッチリリースをインストールします。uv python install 3.12
- 正確なパッチバージョンをインストールする:
これは正確にPython 3.12.3をインストールします。uv python install 3.12.3
- 複数のバージョンをインストールする:
これはPython 3.9、3.10、3.11をインストールします。uv python install 3.9 3.10 3.11
- 制約に合致するバージョンをインストールする:
これはプロジェクトのPythonバージョン要件を変更します。uv python install '>=3.8,=3.11"
その他の注意事項
自動ダウンロード: デフォルトでは、uvはシステムに見つからない場合、必要なPythonバージョンを自動的にダウンロードしてインストールします。
システムPython: uvは既存のPythonインストールを使用できます。または、--no-managed-python
フラグを使用してシステムPythonを強制的に使用できます。
アップグレード: uv管理Pythonバージョンを最新のパッチリリースにアップグレードできます:
uv python upgrade 3.12
または、すべてのインストールされたバージョンをアップグレードします:
uv python upgrade
マイナーバージョン(例: 3.12から3.13)をまたがるアップグレードはサポートされていません。
要約すると、uvはプロジェクトで特定のPythonバージョンをインストール、管理、使用するための柔軟で強力なツールを提供します。
UVが異なるシステムで利用可能なPythonインタープリターをどのように発見するか
UVは、定義された場所をチェックし、各候補のバージョンメタデータを照会することで、異なるシステムで利用可能なPythonインタープリターを発見します。以下にその仕組みを説明します:
- 管理されたPythonインストール:
UVは最初に
UV_PYTHON_INSTALL_DIR
環境変数で指定されたディレクトリをチェックし、そこで自分の管理するPythonバージョンを保存します。 - システムPATH:
macOSとLinuxでは、システムPATHにリストされたディレクトリで
python
、python3
、またはpython3.x
(xはバージョン番号)という名前の実行ファイルをチェックします。Windowsではpython.exe
を探します。 - Windows固有の場所:
Windowsでは、UVはWindowsレジストリとMicrosoft StoreのPythonインタープリターを
py --list-paths
の出力を使用してチェックします。 - 仮想環境: 仮想環境がアクティブまたは指定されている場合、UVはその環境のインタープリターを互換性を確認する前に探索する前にチェックします。
- メタデータ照会: 各発見された実行ファイルはバージョンメタデータを照会されます。要求されたバージョン(またはバージョン制約)に一致する実行ファイルのみが考慮されます。非実行ファイルは無視されます。
- 優先順位とフォールバック: デフォルトでは、UVはシステムPythonインストールを優先しますが、オプションを使用して管理されたものを優先したり、管理された/システムバージョンのみを使用したりできます。適切なインタープリターが見つからない場合、UVは必要なバージョンをダウンロードしてインストールできます。
この堅牢な発見プロセスにより、UVは異なるオペレーティングシステムと環境で正しいPythonインタープリターを信頼性高く見つけて使用できます。