[OSS紹介#23] uv:Pythonパッケージ管理を効率化する新しい選択肢のご紹介

この記事について

この記事では、注目のオープンソースソフトウェア(OSS)「uv」を紹介します。本記事は連載23回目にあたり、Pythonパッケージ管理とプロジェクト管理の効率を大幅に向上させるこのツールの可能性に焦点を当てます。

ソフトウェア開発において、パッケージのインストールや依存関係の管理は避けて通れない重要な作業です。従来のツールでは速度や使いやすさに課題があり、開発者は時間を浪費することが少なくありません。そこで、「uv」はその解決策として登場しました。

「uv」は、Rustで書かれた非常に高速なPythonパッケージおよびプロジェクトマネージャーであり、従来のツールに比べて10倍から100倍の速さで動作します。これにより、開発者はより効率的に作業を進められると期待されています。さらに、強力なロックファイルのサポートやスクリプトの管理機能を搭載し、開発環境を簡素化するとともに、ソフトウェア管理の負担を軽減します。

本記事を通じて、「uv」の特長や利便性について詳しく紹介し、現代の開発シーンにおけるその意義を探っていきます。

リンク:https://github.com/astral-sh/uv


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. uvでできること

uvは、Rustで書かれた非常に高速なPythonパッケージおよびプロジェクトマネージャであり、以下のような機能を提供します。

1.1 高速なパッケージ管理

uvは、従来のpipに対して10~100倍の速度を実現しており、効率よくパッケージの管理が可能です。

1.2 プロジェクト管理

uvは、ロックファイルや作業スペースのサポートを提供し、依存関係の管理を簡単に行えます。

1.3 スクリプトの実行

インラインの依存関係メタデータを利用して、スクリプトの実行が可能です。この機能により、シングルファイルのスクリプトでも依存関係を管理できます。

1.4 Pythonバージョン管理

複数のPythonバージョンをインストールし、迅速に切り替えが可能です。これにより、異なるプロジェクトで異なるPythonバージョンを利用することができます。

1.5 ツールの実行とインストール

uvは、Pythonパッケージとして公開されているコマンドラインツールの実行とインストールをサポートします。

2. セットアップ手順

uvのインストールは非常に簡単で、以下の方法で行うことができます。

2.1 スタンドアロンインストーラーを使用

macOS/Linuxの場合

curl -LsSf https://astral.sh/uv/install.sh | sh

Windowsの場合

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2.2 PyPIからのインストール

また、uvはPyPIからもインストール可能です。

pip install uv

または

pipx install uv

2.3 自動更新

スタンドアロンインストーラーでインストールした場合、以下のコマンドで自動更新が可能です。

uv self update

3. 簡単な使い方

uvを使用したプロジェクト管理やスクリプトの実行に関して、いくつかの基本的なコマンドを紹介します。

3.1 プロジェクトの初期化

新しいプロジェクトを初期化するには、以下のコマンドを使用します。

uv init example

3.2 パッケージの追加

プロジェクトにパッケージを追加するには、次のコマンドを実行します。

uv add ruff

3.3 スクリプトの実行

作成したスクリプトを実行するには、以下のコマンドを使用します。

uv run example.py

3.4 スクリプト作成と実行のデモ

以下は、スクリプトを作成し、実行するデモです。

echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
uv add --script example.py requests
uv run example.py

結論

uvは、Pythonのパッケージ管理を効率化し、プロジェクト管理をシンプルにするための強力なツールです。その高速性と多機能性により、従来のツールの代替として非常に魅力的です。macOS、Linux、Windowsなどの主要なプラットフォームで動作し、簡単にセットアップできるため、Python開発者にとって必須のツールと言えるでしょう。