最新のパッケージ管理ツール"UV"をインストールして使ってみた
Pythonのパッケージ管理ツールとして、最近、注目を集めているUVをインストールして、使ってみましたので記事にします。
世の中にはすでにUVに関しての記事も溢れていますが、ほとんどは職業プログラマーの方が書かれたもので、非エンジニアから見れば、まだまだ難解な記事も多いかと思います。
この記事では、非エンジニアならではの目線で、細かいところや難しいところは省きながら、とにかくUVを使える状態にすることを目標として、分かりやすく解説していきます。
そもそもUVとは?
pipやpyenvといったPythonのパッケージ管理ツールの一つです。
2024年2月に発表されたばかりで、かなり新しいツールですが、すでに、これまでのパッケージ管理ツールの代替になることが期待されています。
UVの最大の特徴は、おそらく高速性にあると思われ、公式にもpipの10〜100倍の速さである旨の記述がありました。ついでにこんなグラフも。

あと、AIアプリのClaudeでは、MCPという技術を使って、AIエージェントのようなことが可能になっています。
MCPは、Claudeのチャット上で指示を与えたときに、Claude自身がPythonやインターネット検索などの専用ツールを使って、課題解決に取り組むという仕組みです。
このMCPにおいて、ClaudeがPythonを使うために必要なツールが、このUVになっています。
自分がUVを使ってみようと思ったきっかけは、まさに、ClaudeのMCPでPythonを使ってみたかったからに他なりません。
なので、ClaudeのMCPに興味のある方は、ぜひ、インストールをお勧めします。
それではここからUVをインストールして、使っていきましょう。(MacOSを想定しています)
UVをインストールする
Macのターミナルを起動して、以下のコマンドを入力します。
$ curl -LsSf https://astral.sh/uv/install.sh | shPATHが通っているかを確認
以下のコマンドが動作すれば、PATHが正しく通っています。
$ uv --version動作しなければ、以下のコマンドで環境変数にPATHを設定します。
$ source $HOME/.local/bin/env UVでPythonを入れる
UVでは以下のように、まとめて複数のバージョンをインストールすることができます。
$ uv python install 3.10 3.11 3.12 # Pythonバージョン一括インストールInstalled 3 versions in 8.48s
+ cpython-3.10.17-macos-aarch64-none
+ cpython-3.11.12-macos-aarch64-none
+ cpython-3.12.10-macos-aarch64-nonePythonのバージョンは以下のコマンドで確認できます。
uv python listUVで仮想環境を作成する
あらかじめ仮想環境用のディレクトリを作成し、移動します。
# ディレクトリを作成
mkdir uv_project
# ディレクトリに移動
cd uv_project
uv venvコマンドで仮想環境を作成します。
$ uv venv 【出力結果】
Using CPython 3.12.10
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate特定バージョンを指定したうえで仮想環境を作成することもできます。
$ uv venv --python 3.11 # 特定バージョンで仮想環境作成【出力結果】
Using CPython 3.11.12
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
ディレクトリ自体にPythonのバージョンを固定するやり方もあります。
$ uv python pin 3.11 # ディレクトリにPythonバージョン固定
従来のvenv では以下のように明示的なアクティベーションが必要でした
source .venv/bin/activate
python hello.pyuv はPython環境の管理を簡素化するために設計されており、仮想環境を明示的にアクティベートしなくても、uv run のコマンドで、Pythonスクリプトを直接実行できます。(具体的な手順は後述)
uv run hello.py を使用すると、コマンドは自動的に以下のことを行います:1. プロジェクトに適切な仮想環境を検出します
2. その環境を一時的に使用してスクリプトを実行します
3. これを環境を手動でアクティベートする必要なく行います
これは uv の主要な利点の一つで、環境のアクティベーションを暗黙的に処理します。
UVでライブラリーをインストールする
uv pip install <ライブラリ名> を使用します。
いつものpipの前にuvと書くだけですね。
例: requests ライブラリをインストールする場合
$ uv pip install requestsインストール済みのライブラリ一覧を確認するには、以下のコマンドを使用します。
$ uv pip listUVでPythonファイルを実行する
では、実際にPythonファイルを実行してみましょう。
hello.pyファイルを用意して、"Hello, World!”を表示するコードを書きます。
$ echo 'print("Hello, World!")' > hello.pyuv runコマンドで、hello.pyファイルを実行します。
uv run hello.py簡単ですね。
おまけ uv init
UVにはプロジェクトという独特の概念があります。
uv initで実行できます。具体的には、
仮想環境の作成
pyproject.toml や requirements.txt などの設定ファイルの生成
依存関係の初期インストール
ができます。
さきほどご説明したuv venvは、上記の中の1.仮想環境の作成にあたります。つまり、uv init は uv venvの機能を包含した上で、プロジェクト全体のセットアップも行う、より包括的なコマンドです。大きなプロジェクトを始める際には uv init が便利かもしれません。
実際にやってみましょう。
uv unitの後にプロジェクト名を加えて実行します。すると、直下にプロジェクト名のディレクトリが作られます。
この中に仮想環境も作成されています。
# プロジェクトを作成
$ uv init new-project
# ディレクトリに移動
$ cd new-projectnew-projectディレクトリ

pyproject.tomlファイルは以下のようになっています。
ここでは、pythonのバージョンを3.12以上としています。
[project]
name = "new-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []
Pythonのバージョンは、プロジェクトを作成する際に指定することもできます。プロジェクト名に続けて、-pオプションでバージョンを指定するだけです。
$ uv init new-project-3.10 -p 3.10pyproject.tomlファイルを確認すると、">=3.10"になっていると思います。
パッケージの追加はuv addで行います
$ uv add requestsディレクトリ内にあるrequirements.txt や pyproject.toml に記載された依存関係を一括でインストールするには、以下のコマンドを使用します。
$ uv syncPythonファイルの実行は、uv runで行います。
$ uv run main.py 【出力結果】
Hello from new-project-3-10!さいごに
いかがでしたでしょうか。
高速なところも良いですが、プロジェクト管理もしやすいですし、コードも直感的で分かりやすいのではないかと思います。
Pythonには様々なパッケージ管理ツールがあって、しかも、日々進化しています。自分も、これまでいくつかのツールを使って、ご紹介もしてきましたが、今のところ、UVが一番使いやすそうな印象です。
最後までお読みいただきありがとうございました。
いいなと思ったら応援しよう!
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます! 