pip/venvから乗り換え?Python「uv」を試してみた【初心者向け】

pip/venvから乗り換え?Python「uv」を試してみた【初心者向け】

Pythonが爆速に!?噂のパッケージ管理ツール「uv」を試してみた!【インストール・基本操作編】

こんにちは!今日は、Python界で話題沸騰中の新しいパッケージ管理ツール「uv」について、学習したことのメモを残していきます。

「uvって何?」「pipやvenvとどう違うの?」「本当に速いの?」

そんな疑問を抱えている方、特に未来の自分に向けて、インストール方法から基本的な使い方まで、試行錯誤の記録をまとめました。
Rust製で超高速と噂の「uv」、一緒に触ってみましょう!

1. 「uv」って何? まずはインストール!

「uv」は、Rustで作られた、超高速なPythonパッケージインストーラー兼リゾルバーです。
従来の pipvenv の機能を、より高速かつモダンな形で提供することを目指しています。

さて、早速インストール…と思ったら、いきなり選択肢がたくさん!

どれを選べばいいのか迷ったので、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のバージョンを表示します)

ターミナルで `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!

ターミナルで `uv run main.py` を実行した結果

ちゃんと “Hello from uv-test!” と出力されました!

ここで注目したいのは、出力の2行目:


Creating virtual environment at: .venv

uv run を実行すると、自動的に .venv という名前の仮想環境が作成 され、その中でプログラムが実行されます。
これは、python -m venv .venvconda create -n myenv python=3.11 のようなコマンドを別途実行する必要がないことを意味します!

uv.python-version を見て適切なPythonバージョンを選び、自動で仮想環境を作成・管理してくれるのは、非常に便利ですね!

とりあえずひと段落

今回は、Pythonの新しいパッケージ管理ツール「uv」のインストールから、プロジェクトの作成、実行までを試してみました。

噂通りの爆速…かどうかは、まだ大きなプロジェクトで試していないので分かりませんが、

  • Homebrewで簡単インストール (Mac)
  • uv init でプロジェクトの雛形をサクッと作成
  • uv run で仮想環境の作成と実行を自動化

といった点で、非常に使いやすいツールだと感じました。

次回は、ライブラリの追加 (uv add) など、pip で行っていた作業を uv でどのように行うのか、試していきたいと思います!

Comments

No comments yet. Why don’t you start the discussion?

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です