メインコンテンツへスキップ
見出し画像

最新のパッケージ管理ツール"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.txt や pyproject.toml に記載された依存関係を一括でインストールするには、以下のコマンドを使用します。

    $ uv sync

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

    $ uv run main.py    

    【出力結果】

    Hello from new-project-3-10!



    さいごに


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

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

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

     
     
     

    Non

     
     
    Pythonや統計・AIの勉強をしながら、いろいろなことに挑戦しています。勉強の内容や、挑戦して良かったことなどをシェアしていきたいと思います。金融が本業なので、投資に役立つ情報などもお届けしていきます(国際公認投資アナリスト)。 どうぞ、よろしくお願いします。

    あなたへのおすすめ