Pythonが爆速に!?噂のパッケージ管理ツール「uv」を試してみた!【インストール・基本操作編】
こんにちは!今日は、Python界で話題沸騰中の新しいパッケージ管理ツール「uv」について、学習したことのメモを残していきます。
「uvって何?」「pipやvenvとどう違うの?」「本当に速いの?」
そんな疑問を抱えている方、特に未来の自分に向けて、インストール方法から基本的な使い方まで、試行錯誤の記録をまとめました。
Rust製で超高速と噂の「uv」、一緒に触ってみましょう!
1. 「uv」って何? まずはインストール!
「uv」は、Rustで作られた、超高速なPythonパッケージインストーラー兼リゾルバーです。
従来の pip
や venv
の機能を、より高速かつモダンな形で提供することを目指しています。
さて、早速インストール…と思ったら、いきなり選択肢がたくさん!
どれを選べばいいのか迷ったので、AI (Gemini) に相談してみました。
私: uvのインストール方法、いっぱいあるけど、どれがいいの?MacBook Air (M3) なんだけど。
Gemini:
- Homebrew (
brew install uv
): macOSユーザーにおすすめ!システムとの相性も良く、管理が楽です。特にM3チップなら最適化されて、さらに高速動作が期待できます。- pip (
pip install uv
): Python環境があればOS問わず使えますが、環境によっては追加設定が必要な場合も。複数の仮想環境で独立して管理したい場合にも良いでしょう。結論: M3 Macユーザーなら、Homebrewが簡単でパフォーマンスも期待できるのでおすすめです!
なるほど!今回は、Geminiのおすすめ通り、Homebrew でインストールすることにしました。
brew install uv
(ちなみに、Windowsユーザー向けには WinGet
でのインストール方法もあるようです。Windows PCで試す時は、そちらを使ってみようと思います。)
2. 「uv」コマンドを叩いてみる!
インストールが無事に完了したので、ターミナルで uv
と入力してみました。
Usage: uv [OPTIONS] <COMMAND> (使い方: uv [オプション] <コマンド>)
Commands:
run Run a command or script (コマンドまたはスクリプトを実行します)
init Create a new project (新しいプロジェクトを作成します)
add Add dependencies to the project (プロジェクトに依存関係を追加します)
remove Remove dependencies from the project (プロジェクトから依存関係を削除します)
sync Sync the project's environment (プロジェクトの環境を更新します)
lock Update the project's lock file(s) (プロジェクトのロックファイルを更新します)
export Export the project's lock file to alternative formats (プロジェクトのロックファイルを別の形式にエクスポートします)
tree Display the project's dependency tree (プロジェクトの依存関係ツリーを表示します)
tool Run and install commands provided by Python packages (Pythonパッケージによって提供されるコマンドを実行およびインストールします)
python Manage Python installations (Pythonのバージョンとインストールを管理します)
pip Manage Python packages using a pip-compatible interface (pip互換のインターフェースでPythonパッケージを管理します)
venv Create a virtual environment (仮想環境を作成します)
build Build Python packages into source distributions and wheels (Pythonパッケージをソース配布およびホイールにビルドします)
publish Upload distributions to an index (配布をインデックスにアップロードします)
cache Manage the uv cache (uvのキャッシュを管理します)
self Manage the uv executable (uv実行可能ファイルを管理します)
version Show uv's version (uvのバージョンを表示します)
help Print this message or the help of the given subcommand(s) (コマンドのドキュメントを表示します)
Cache options: (キャッシュオプション)
-n, --no-cache Avoid reading from or writing to the cache. Populates a temporary
directory for the duration of the operation [env: UV_NO_CACHE=] (キャッシュからの読み取りまたは書き込みを回避し、操作の期間中は一時ディレクトリを使用します)
--cache-dir
Path to the cache directory [env: UV_CACHE_DIR=] (キャッシュディレクトリへのパス)
Python options: (Pythonオプション)
--python-preference
Whether to prefer uv-managed Python installations or system Python
installations [env: UV_PYTHON_PREFERENCE=] [possible values:
only-managed, managed, system, only-system] (uv管理のPythonインストールとシステムPythonインストールのどちらを優先するか)
--no-python-downloads
Disable automatic Python downloads [env: "UV_PYTHON_DOWNLOADS=never"] (Pythonの自動ダウンロードを無効にします)
Global options: (グローバルオプション)
-q, --quiet Do not print any output (出力を一切表示しません)
-v, --verbose... Use verbose output (詳細な出力を表示します)
--color
Control the use of color in output [possible values: auto, always, never] (出力での色の使用を制御します)
--native-tls Whether to load TLS certificates from the platform's native certificate
store [env: UV_NATIVE_TLS=] (プラットフォームのネイティブ証明書ストアからTLS証明書をロードするかどうか)
--offline Disable network access [env: UV_OFFLINE=] (ネットワークアクセスを無効にします)
--allow-insecure-host
Allow insecure connections to the given host [env: UV_INSECURE_HOST=] (ホストへの安全でない接続を許可します)
--no-progress Hide all progress output [env: UV_NO_PROGRESS=] (すべての進行状況出力を非表示にします)
--directory
Switch to the given directory before executing the command (コマンドを実行する前に、指定されたディレクトリに変更します)
--project Run the command within the given project directory (指定されたプロジェクトディレクトリ内でコマンドを実行します)
--config-file
Path to a uv.toml configuration file to use [env: UV_CONFIG_FILE=] (構成に使用するuv.tomlファイルへのパス)
--no-config Avoid discovering configuration files (pyproject.toml, uv.toml) [env:
UV_NO_CONFIG=] (構成ファイル(pyproject.toml、uv.toml)の検出を回避します)
-h, --help Print help (see more with 'uv help') (このコマンドの簡潔なヘルプを表示します)
-V, --version Print version (uvのバージョンを表示します)
たくさんコマンドが表示されましたね!英語なので、またもやGeminiに日本語にしてもらいました。
(今回は見やすいように、各行の後ろに日本語訳を追加しました!)
Gemini・・・便利だなぁ・・・。
コマンドがたくさんありますが、まずはプロジェクトを作成して、基本的な機能を使ってみましょう。
3. プロジェクトを作成してみる (`uv init`)
新しいプロジェクトを作成するには、uv init
コマンドを使います。
uv init uv_test
これを実行すると、uv_test
というディレクトリが作成され、その中にいくつかのファイルが自動生成されました。
.git
/.gitignore
: Git関連のファイル。最初からバージョン管理を意識しているのは良いですね!.python-version
: プロジェクトで使用するPythonのバージョンを指定するファイル。README.md
: プロジェクトの説明などを書くファイル (最初は空)。main.py
: 簡単なサンプルコード。pyproject.toml
: プロジェクトの設定ファイル (依存関係、ビルド設定など)。
それぞれのファイルの中身も見てみましょう。
.python-version:
3.11
私の環境では 3.11 が指定されました。uvはこのファイルを読み取って、適切なPythonバージョンを使用します。
main.py:
def main():
print("Hello from uv-test!")
if __name__ == "__main__":
main()
シンプルな “Hello World” プログラムですね。
pyproject.toml:
[project]
name = "uv-test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = []
プロジェクト名、バージョン、説明、依存関係などが記述されています。pip
でいう requirements.txt
の役割も、このファイルが担います。
4. プロジェクトを実行してみる (`uv run`)
では、自動生成された main.py
を実行してみましょう。
cd uv_test # 作成したディレクトリに移動
uv run main.py
実行結果:
Using CPython 3.11.11
Creating virtual environment at: .venv
Hello from uv-test!
ちゃんと “Hello from uv-test!” と出力されました!
ここで注目したいのは、出力の2行目:
Creating virtual environment at: .venv
uv run
を実行すると、自動的に .venv
という名前の仮想環境が作成 され、その中でプログラムが実行されます。
これは、python -m venv .venv
や conda create -n myenv python=3.11
のようなコマンドを別途実行する必要がないことを意味します!
uv
が .python-version
を見て適切なPythonバージョンを選び、自動で仮想環境を作成・管理してくれるのは、非常に便利ですね!
とりあえずひと段落
今回は、Pythonの新しいパッケージ管理ツール「uv」のインストールから、プロジェクトの作成、実行までを試してみました。
噂通りの爆速…かどうかは、まだ大きなプロジェクトで試していないので分かりませんが、
- Homebrewで簡単インストール (Mac)
uv init
でプロジェクトの雛形をサクッと作成uv run
で仮想環境の作成と実行を自動化
といった点で、非常に使いやすいツールだと感じました。
次回は、ライブラリの追加 (uv add
) など、pip
で行っていた作業を uv
でどのように行うのか、試していきたいと思います!