ホームページ >バックエンド開発 >Python チュートリアル >uv の紹介: 次世代 Python パッケージ マネージャー

uv の紹介: 次世代 Python パッケージ マネージャー

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-19 06:34:26928ブラウズ

Python の進化は、手動インストールから pip や詩のようなツールに至るまで、パッケージ管理の進歩と密接に結びついています。しかし、プロジェクトが複雑になるにつれて、従来のツールではスピードや効率性が劣ることがよくあります。

uv は最先端の Python パッケージであり、Rust で構築されたプロジェクト マネージャーであり、それを変えることを目指しています。 uv は、pip、poetry、virtualenv などのツールの機能を組み合わせることで、依存関係の管理、スクリプトの実行、プロジェクトの構築などのタスクをすべて効率化し、優れたパフォーマンスを実現します。 pip コマンドとのシームレスな互換性があるため、追加の学習曲線は必要ありません。

このチュートリアルでは、uv をインストールし、その機能を最大限に活用する方法を説明します。プロジェクトのセットアップから依存関係の管理、スクリプトの実行、拡張された pip インターフェイスの活用まで。

はじめる

目次

  • pip の制限
  • 紫外線とは
  • UV の主な機能
  • ベンチマーク
  • インストール
  • 仮想環境の作成
  • UV を使用した Flask アプリの構築
  • UV を使用して Python をインストールする
  • ツール
  • チートシート
  • 現在の制限

ピップの制限

Pip は、Python で書かれた広く使用されているパッケージ管理システムで、ソフトウェア パッケージのインストールと管理を目的として設計されています。ただし、その人気にもかかわらず、Python のパッケージ管理ツールの中で最も遅いものの 1 つであると批判されることがよくあります。 「pip install が遅い」という苦情は非常に一般的であるため、開発者フォーラムやスレッドに頻繁に表示されます。

pip の重大な欠点の 1 つは、依存関係の匂いの影響を受けやすいことです。依存関係の匂いは、依存関係の構成ファイルの記述や保守が不十分な場合に発生します。これらの問題は、プロジェクトの複雑さの増大や保守性の低下など、深刻な結果につながる可能性があります。

pip のもう 1 つの制限は、ランタイム環境を復元するときに Python コードを一貫して正確に照合できないことです。この不一致により、依存関係推論の成功率が低下する可能性があり、プロジェクト環境を確実に再作成することが困難になります。

紫外線とは何ですか

uv は、ruff の作成者によって開発され、Rust で書かれた最新の高性能 Python パッケージ マネージャーです。 pip および pip-tools のドロップイン代替品として設計されており、優れた速度と既存のツールとの互換性を実現します。

主な機能には、編集可能なインストール、Git と URL の依存関係、制約ファイル、カスタム インデックスなどのサポートが含まれます。 uv の標準準拠の仮想環境は他のツールとシームレスに連携し、ロックインやカスタマイズを回避します。これはクロスプラットフォームで、Linux、Windows、macOS をサポートしており、PyPI インデックスに対して広範にテストされています。

シンプルさ、スピード、信頼性を重視した uv は、インストールの遅さ、バージョンの競合、複雑な依存関係の管理など、開発者の一般的な問題点に対処し、最新の Python 開発のための直感的なソリューションを提供します。

UVの主な特徴

  • ⚖️ ドロップイン置換: pip、pip-tools、virtualenv、およびその他のツールを完全な互換性でシームレスに置き換えます。
  • ⚡ 驚異的な速度: pip、pip-compile、pip-sync などの従来のツールより 10 ~ 100 倍高速です。
  • ?ディスク容量の効率化: 依存関係の重複排除にグローバル キャッシュを利用し、ストレージを節約します。
  • ?柔軟なインストール: Rust や Python を必要とせず、curl、pip、または pipx 経由でインストール可能。
  • ?徹底的にテスト済み: 上位 10,000 個の PyPI パッケージによる大規模なパフォーマンスが実証されています。
  • ?️ クロスプラットフォーム サポート: macOS、Linux、Windows と完全な互換性があります。
  • ?高度な依存関係管理: 機能には、依存関係バージョンのオーバーライド、代替解決戦略、競合追跡リゾルバーが含まれます。
  • ⁉️ 明確なエラー メッセージ: クラス最高のエラー処理により、開発者は競合を効率的に解決できます。
  • ?最新の Python 機能: 編集可能なインストール、Git 依存関係、直接 URL、ローカル依存関係、制約ファイルなどをサポートします。
  • ?統合ツール: pip、pipx、poetry、pyenv、twine などのツールの機能を 1 つのソリューションに結合します。
  • ?️ アプリケーションとスクリプトの管理: Python のバージョンをインストールして管理し、インライン依存関係メタデータを使用してスクリプトを実行し、包括的なプロジェクト ワークフローをサポートします。
  • ?️ ユニバーサル ロックファイル: 一貫性のある移植可能なロックファイルによりプロジェクト管理を簡素化します。
  • ?ワークスペースのサポート: Cargo スタイルのワークスペース管理でスケーラブルなプロジェクトを処理します。

ベンチマーク

Introducing uv: Next-Gen Python Package Manager
出典: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
ウォーム キャッシュを使用して依存関係を解決 (左) およびインストール (右) し、仮想環境を再作成するプロセスをシミュレートするか、既存のプロジェクトに新しい依存関係を追加します。

Introducing uv: Next-Gen Python Package Manager
出典: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
コールド キャッシュを使用した依存関係の解決 (左) とインストール (右) は、クリーンな環境での実行をシミュレートします。キャッシュを使用しない場合、uv は pip および pip-tools より 8 ~ 10 倍高速であり、ウォーム キャッシュを使用すると 80 ~ 115 倍の速度を実現します。

Introducing uv: Next-Gen Python Package Manager
出典: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
pip や setuptools などのシード パッケージを使用した場合 (左) と使用しない場合 (右) の仮想環境の作成。 uv は、Python から独立して動作しながら、python -m venv よりも約 80 倍、virtualenv よりも 7 倍高速です。

インストール

UV のインストールは素早く簡単です。スタンドアロン インストーラーを選択することも、PyPI から直接インストールすることもできます。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

UV を使用する前に、UV パスを環境変数に追加する必要があります。
Linux および macOS の場合は、ターミナルで次のコマンドを使用して PATH 環境変数を変更します:

export PATH="$HOME/.local/bin:$PATH"

Windows の場合、Windows でユーザーとシステムの両方の PATH 環境変数にディレクトリを追加するには、検索パネルで「環境変数」を検索します。 [ユーザー環境変数/システム環境変数] で、パス変数を選択し、[編集]、[新規] の順にクリックして、目的のパスを追加します。

%USERPROFILE%\.local\bin

Introducing uv: Next-Gen Python Package Manager
インストール後、ターミナルで uv コマンドを実行して、正しくインストールされたことを確認します。

Introducing uv: Next-Gen Python Package Manager

仮想環境の作成

UV を使用した仮想環境の作成はシンプルで簡単です。次のコマンドを希望の環境名とともに使用して作成します。

uv venv
  • 次のコマンドを実行して仮想環境をアクティブ化します。
# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

パッケージのインストール

仮想環境へのパッケージのインストールは、よく知られたプロセスに従います。さまざまなインストール方法を以下に示します。

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

ロックされた依存関係を仮想環境と同期するには、次のコマンドを使用します。

uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

uv は、-rrequirements.txt、-cconstraints.txt、-e .、--index-url など、既存のツールと同様のさまざまなコマンドライン引数をサポートしています。

UV を使用した Flask アプリの構築

UV を使用したプロジェクト関連のコマンドをいくつか見てみましょう。まず、「sample-project」という名前の Python プロジェクトを初期化します。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

サンプルプロジェクトディレクトリに移動します。 uv は、app.py、requirements.txt、README.md などの重要なファイルを使用してプロジェクトを初期化します。

Introducing uv: Next-Gen Python Package Manager

run コマンドを使用して、サンプル Python ファイルを実行します。このプロセスでは、まず仮想環境フォルダーを作成し、次に Python ファイルを実行します。

export PATH="$HOME/.local/bin:$PATH"

Introducing uv: Next-Gen Python Package Manager

フラスコをインストールする

Flask をプロジェクトの依存関係に追加します。

%USERPROFILE%\.local\bin

Flask アプリケーションを作成する

新しいものを作成し、次のコードを記述します。

uv venv

アプリを実行する

uv run コマンドを使用してアプリケーションを実行します。

# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

ブラウザを開くか、curl や Postman などのツールを使用して GET リクエストを送信します。

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

Python を UV でインストールする

UV を使用した Python のインストールはオプションであり、既存の Python インストールとシームレスに動作します。ただし、Python を UV 経由でインストールすることを希望する場合は、次のような簡単なコマンドで実行できます。

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

このアプローチは、リポジトリの管理やインストーラーのダウンロードの必要性を回避できるため、多くの場合、従来の方法と比較してより便利で信頼性が高くなります。コマンドを実行するだけで、セットアップが使用できるようになります。

ツール

CLI ツールは、uv コマンドでインストールして使用できます。たとえば、huggingface_hub ツールをインストールすると、Hugging Face リポジトリへのファイルのプルおよびプッシュが可能になります。

  • UV を使用して Huggingface_hub をインストールするには、次のコマンドを使用します。
uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

Introducing uv: Next-Gen Python Package Manager

  • 次のコマンドは、インストールされているすべてのツールを表示します。
uv init sample-project

Introducing uv: Next-Gen Python Package Manager

チートシート

これは、UV を使用して一般的な操作を実行するための簡単なチートシートです。

Introducing uv: Next-Gen Python Package Manager

電流制限

uv は Python パッケージ管理のための高速かつ効率的なソリューションを提供しますが、いくつかの制限があります。

  • 不完全な pip 互換性: uv は pip インターフェースのかなりの部分をサポートしていますが、機能セット全体をまだカバーしていません。これらの違いの中には、意図的な設計上の選択によるものもあれば、UV がまだ開発の初期段階にあることに起因するものもあります。詳細な比較については、pip 互換性ガイドを参照してください。
  • プラットフォーム固有の要件.txt: pip-compile と同様に、uv はプラットフォーム固有の要件.txt ファイルを生成します。これは、プラットフォームに依存しないpoetry.lockファイルやpdm.lockファイルを作成するPoetryやPDMなどのツールとは対照的です。その結果、uv のrequirements.txt ファイルは、異なるプラットフォームや Python バージョン間での移植性に欠ける可能性があります。

この記事をお読みいただきありがとうございます!!

コンテンツをレビューしてくださった Gowri M Bhatt に感謝します。

この記事が気に入ったら、ハート ボタン ♥ をクリックして共有し、他の人が記事を見つけられるようにしてください。

リソース

uv - Rust で書かれた非常に高速な Python パッケージおよびプロジェクト マネージャー | docs.astral.sh

以上がuv の紹介: 次世代 Python パッケージ マネージャーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。