
uv の使い方
「uv」の使い方をまとめました。
1. uv
「uv」は、高速なPythonパッケージ管理ツールです。 従来のpipに代わるツールとして、高速性と効率性を重視して設計されています。
特徴は、次のとおりです。
・pip、poetry、pyenvなどを置き換える。
・pipよりも10~100倍高速。
・任意のバージョンのPythonのインストール・管理。
・Pythonアプリケーションの実行・インストール。
・インライン依存関係メタデータをサポートしたスクリプト実行。
・ユニバーサルロックファイルで包括的なプロジェクト管理。
・pip互換インターフェース。
・Cargo-styleのワークスペース。
・依存関係の重複排除のためのグローバルキャッシュ。
・Rust・Pythonなしにcurlまたはpipを介してインストール可能。
・macOS、Linux、Windowsをサポート。

2. インストール
インストール手順は、次のとおりです。
2-1. macOS ・ Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
macOSは、brewでもインストールできます。
brew install uv
2-2. Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
3. uv の使い方
「uv」の使い方は、次のとおりです。
3-1. プロジェクトの作成とコードの実行
(1) プロジェクトの作成。
今回はプロジェクト名「my-project」、Ptyhonのバージョン「3.10」で作成しました。
uv init -p 3.10 my-project
cd my-project
プロジェクトのフォルダ構成は、次のとおりです。
・my-project
・hello.py
・pyproject.toml
・README.md
(2) コードの編集。
・hello.py
print("Hello, World!")
(3) コードの実行。
uv run hello.py
Hello, World!
3-2. パッケージの追加と利用
(1) パッケージの追加。
今回は「request」パッケージを追加しました。
uv add requests
Resolved 6 packages in 128ms
Prepared 4 packages in 179ms
Installed 5 packages in 4ms
+ certifi==2024.12.14
+ charset-normalizer==3.4.1
+ idna==3.10
+ requests==2.32.3
+ urllib3==2.3.0
(2) パッケージの確認。
uv pip list
Package Version
------------------ ----------
certifi 2024.12.14
charset-normalizer 3.4.1
idna 3.10
requests 2.32.3
urllib3 2.3.0
バージョン指定付きでインストールするには、次のように記述します。
uv add requests==2.32.3
(3) コードの編集。
・hello.py
import requests
response = requests.get('https://www.google.com')
print(response.status_code)
(4) コードの実行。
uv run hello.py
200
3-3. その他の操作
(1) パッケージの削除。
uv remove requests
(2) 「requirements.txt」のインストール。
uv add -r requirements.txt
(3) 依存関係の同期。
「pyproject.toml」に記述された依存関係を基に、プロジェクトを最新の状態に同期します。
uv sync
(4) pipと同じ挙動でパッケージをインストール。
uv pip install requests
「uv pip install」は、uvのメリット (速度など) を得ることができません。何らかの理由で、pipと同じ挙動でインストールしたい場合に使います。