見出し画像

最新のパッケージ管理ツール"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 | sh

PATHが通っているかを確認
以下のコマンドが動作すれば、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-none

Pythonのバージョンは以下のコマンドで確認できます。

uv python list



UVで仮想環境を作成する


あらかじめ仮想環境用のディレクトリを作成し、移動します。

# ディレクトリを作成
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.py

uv は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 list



UVでPythonファイルを実行する


では、実際にPythonファイルを実行してみましょう。

hello.pyファイルを用意して、"Hello, World!”を表示するコードを書きます。

$ echo 'print("Hello, World!")' > hello.py

uv runコマンドで、hello.pyファイルを実行します。

uv run hello.py

簡単ですね。



おまけ uv init

UVにはプロジェクトという独特の概念があります。
uv initで実行できます。具体的には、

  1. 仮想環境の作成

  2. pyproject.toml や requirements.txt などの設定ファイルの生成

  3. 依存関係の初期インストール

ができます。

さきほどご説明したuv venvは、上記の中の1.仮想環境の作成にあたります。つまり、uv init は uv venvの機能を包含した上で、プロジェクト全体のセットアップも行う、より包括的なコマンドです。大きなプロジェクトを始める際には uv init が便利かもしれません。

実際にやってみましょう。
uv unitの後にプロジェクト名を加えて実行します。すると、直下にプロジェクト名のディレクトリが作られます。
この中に仮想環境も作成されています。

# プロジェクトを作成
$ uv init new-project
# ディレクトリに移動
$ cd new-project

new-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.10

pyproject.tomlファイルを確認すると、">=3.10"になっていると思います。

パッケージの追加はuv addで行います

$ uv add requests

ディレクトリ内にあるrequirements.txtpyproject.toml に記載された依存関係を一括でインストールするには、以下のコマンドを使用します。

$ uv sync

Pythonファイルの実行は、uv runで行います。

$ uv run main.py    

【出力結果】

Hello from new-project-3-10!



さいごに


いかがでしたでしょうか。
高速なところも良いですが、プロジェクト管理もしやすいですし、コードも直感的で分かりやすいのではないかと思います。

Pythonには様々なパッケージ管理ツールがあって、しかも、日々進化しています。自分も、これまでいくつかのツールを使って、ご紹介もしてきましたが、今のところ、UVが一番使いやすそうな印象です。

最後までお読みいただきありがとうございました。

いいなと思ったら応援しよう!

Non よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!