uv - 新しいPythonパッケージ、プロジェクト、および環境マネージャー

Python uvの良い点

目次

Python uv は、Rustで書かれた現代的で高性能なPythonパッケージおよびプロジェクトマネージャーです。pippip-toolsvirtualenvpipxpyenvなどの従来のPythonパッケージ管理ツールの代替品として設計され、Python開発ワークフローを簡素化し高速化することを目的としています。

uvは、人気のあるPythonリントルRuffを開発したAstralチームによって開発され、Pythonエコシステムの一般的な課題(遅いインストール、依存関係の競合、複雑な環境管理など)を解決することを目的としています。

uv python ultra-violet spa

uvの主な機能

  • 例外的な速度: uvは従来のツールよりもはるかに高速で、キャッシュなしで8~10倍、ウォームキャッシュで80~115倍の速度を提供します。
  • オールインワンツール: パッケージインストール、依存関係解決、仮想環境管理、Pythonバージョン管理、プロジェクトスキャフォールディング、スクリプト実行を1つのツールで統合しています。
  • 互換性: pip互換のコマンドラインインターフェースを提供し、学習コストを抑えて簡単に採用できます。
  • 堅牢な依存関係管理: 正確な依存関係解決とロックファイルサポートを提供し、再現可能な環境を実現します。
  • 自動仮想環境: 仮想環境を自動的に作成および管理し、手動設定を削減します。
  • クロスプラットフォームサポート: macOS、Linux、Windowsで動作します。
  • スタンドアロンインストール: PythonやRustを必要とせず、簡単なインストーラーまたはcurlを使用してインストールできます。

uv vs poetry vs pdm vs pip performance comparison

なぜ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をシステムにインストールして使用するには、以下の簡単な手順に従ってください。

インストール

  1. スタンドアロンインストーラー(推奨)
    • 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
  1. 代替: pipを使用してインストール(Pythonがインストールされている場合)
pip install uv

注意: システム全体のアクセスを必要とする場合を除き、この方法はシステムPython環境を混乱させる可能性があるため、推奨されません。

  1. 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にシェル統合を追加して、デフォルトの仮想環境を自動的にアクティブ化し、pipuv pipにエイリアス化できます。

これらの手順に従うことで、uvをインストールし、Pythonプロジェクトを高速かつ簡単に管理できるようになります。

特定のPythonバージョンをインストールする

uvを使用して特定のPythonバージョンをインストールし、プロジェクトで管理できます。

  • 最新の安定版Pythonをインストールする:
    uv python install
    
    このコマンドは、利用可能な最新の安定版Pythonをダウンロードしてインストールします。
  • 特定のバージョンをインストールする:
    uv python install 3.12
    
    これはPython 3.12(例: 3.12.3)の最新パッチリリースをインストールします。
  • 正確なパッチバージョンをインストールする:
    uv python install 3.12.3
    
    これは正確にPython 3.12.3をインストールします。
  • 複数のバージョンをインストールする:
    uv python install 3.9 3.10 3.11
    
    これはPython 3.9、3.10、3.11をインストールします。
  • 制約に合致するバージョンをインストールする:
    uv python install '>=3.8,=3.11"
    
    これはプロジェクトのPythonバージョン要件を変更します。

その他の注意事項

自動ダウンロード: デフォルトでは、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にリストされたディレクトリでpythonpython3、またはpython3.x(xはバージョン番号)という名前の実行ファイルをチェックします。Windowsではpython.exeを探します。
  • Windows固有の場所: Windowsでは、UVはWindowsレジストリとMicrosoft StoreのPythonインタープリターをpy --list-pathsの出力を使用してチェックします。
  • 仮想環境: 仮想環境がアクティブまたは指定されている場合、UVはその環境のインタープリターを互換性を確認する前に探索する前にチェックします。
  • メタデータ照会: 各発見された実行ファイルはバージョンメタデータを照会されます。要求されたバージョン(またはバージョン制約)に一致する実行ファイルのみが考慮されます。非実行ファイルは無視されます。
  • 優先順位とフォールバック: デフォルトでは、UVはシステムPythonインストールを優先しますが、オプションを使用して管理されたものを優先したり、管理された/システムバージョンのみを使用したりできます。適切なインタープリターが見つからない場合、UVは必要なバージョンをダウンロードしてインストールできます。

この堅牢な発見プロセスにより、UVは異なるオペレーティングシステムと環境で正しいPythonインタープリターを信頼性高く見つけて使用できます。

便利なリンク