概要
この記事では、Python のパッケージ・プロジェクト管理ライブラリ uv の使い方について解説します。
uv の機能
uv は Rust で実装された高速なパッケージおよびプロジェクトの管理を実現します。
pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv
で行えることが uv 1 つで完結- pip の 10 ~ 100 倍高速
- 依存関係のバージョンを固定するロックファイルを使用
- Python のバージョン管理機能
- pip と互換性がある CLI インタフェース
- macOS、Linux、Windows をサポート
インストール
各 OS ごとのインストール方法は Installation | uv を参考にしてください。
以下の方法の場合、インストーラーが PATH に uv
のインストール先を追加するため、
curl
を使用してインストールする (Linux/Mac)PowerShell を使用してインストールする (Windows)
pip
を使用してインストールする
uv の使い方
uv はプロジェクトを作成し、そのプロジェクトで使用する依存関係を管理するのが基本的な使い方になります。
手順 1. uv init
でプロジェクトを作成する
uv init
コマンドを使用してプロジェクトを作成します。
以下のコマンドを実行すると、myapp
ディレクトリ内に Python アプリケーション用のファイルが作成されます。
手順 2. プロジェクトの依存関係を追加する
プロジェクトに必要な依存関係を uv add
を使用して追加します。
依存関係の情報は pyproject.toml
に記載されます。
pip と同様、依存関係指定子 に記載された方法で、追加するパッケージのバージョンを指定することも可能です。
- バージョン 2.0.0:
uv add package==2.0.0
- バージョン 2.0.0 以上:
uv add package>=2.0.0
- バージョン 2.0.0 以上、3 未満:
uv add package>=2.0.0,<3.0.0
pip の requirements.txt
からまとめて依存関係を追加することも可能です
プロジェクトから依存関係を削除するには、 uv remove
を使用します。
手順 3. 仮想環境を作成する
uv sync
を使用して、依存関係の情報が記載された pyproject.toml
の内容に基づき、venv
による仮想環境を作成します。
実行すると、.venv
ディレクトリおよびロックファイル uv.lock
が作成されます。
ロックファイルとは、プロジェクトの依存関係を厳密に管理するためのファイルです。これにより、異なる環境や時期においても、同じ依存関係がインストールされることを保証します。
以下のコマンドで仮想環境を有効・無効にできます。
- Linux/Mac
- 仮想環境を有効にする:
source .venv/bin/activate
- 仮想環境を無効にする:
deactivate
- 仮想環境を有効にする:
- Windows
- 仮想環境を有効にする:
.venv\Scripts\activate
- 仮想環境を無効にする:
deactivate
- 仮想環境を有効にする:
手順 4. アプリケーションを実行する
プロジェクト内のスクリプトファイルを仮想環境で実行するには、uv run <SCRIPT>
を実行します。
Python のバージョンを管理する
uv はシステムにインストールされた Python を検出して使用するようになっていますが、 pyenv のように指定したバージョンの Python をインストールする仕組みも存在します。
プロジェクトで指定したバージョンの Python を使用したい場合は、以下のコマンドで行います。
コマンド | 説明 |
---|---|
uv python list |
インストール利用可能なバージョン一覧を表示 |
uv python install |
指定したバージョンをインストール |
uv python uninstall |
指定したバージョンをアンインストール |
uv python find |
指定したバージョンがインストール済みか検索 |
uv python pin |
指定したバージョンをプロジェクトに固定 |
uv python dir |
インストール先のディレクトリパスを表示 |
pyproject.toml
--app
または --lib
の場合、pyproject.toml
が作成されます。
このファイルには、プロジェクトの名前、説明およびバージョンといったメタ情報が含まれます。
コメント