Rust 製の Python 爆速パッケージマネジメントの uv を使ってみよう

2024/04/11に公開

なぜ uv を使うのか?

単純な話、他のツールより高速だからです。

以下はパフォーマンス比較

後は Python や Node 関連の環境はパッケージマネジメントが多すぎてカオスな状況なのでそれを修正したいという感じで作られたツールのようです。

以下はカオスになりがちなPython環境説明図。


https://xkcd.com/1987/

uvはRust における Cargo を目指しているようです(Cargo は他の言語と比べてかなり安定しているパッケージマネージャー)

uv の記事でも書かれているように、かなり JavaScript や Python 関連のパッケージマネージャーを研究して作られたようです。

まあ Cargo は当然として、Python より、JavaScript 関連のほうが多そうですが(Bun、 Orogene、pnpm など)。

Finally, we'd like to thank all those that contributed directly or indirectly to the development of uv. Foremost among them are Jacob Finkelman and Matthieu Pizenberg, the maintainers of pubgrub-rs. uv uses PubGrub as its underlying version solver, and we're grateful to Jacob and Matthieu for the work they put into PubGrub in the past, and for the way they've engaged with us as collaborators throughout the project.

We'd also like to thank those projects in the packaging space that've inspired us, especially Cargo, along with Bun, Orogene, and pnpm from the JavaScript ecosystem, and Posy, Monotrail, and Rye from the Python ecosystem. In particular, thanks to Armin Ronacher for collaborating with us on this effort.

Finally, we'd like to thank the maintainers of pip and the members of the PyPA more broadly for all the work they do to make Python packaging possible.

インストール方法

インストールは簡単で、以下のコマンドで実行できます

curl -LsSf https://astral.sh/uv/install.sh | sh

基本的な利用方法

Prefix としてuvを追加することで各種ライブラリのインストールができます、また venv の環境構築を行うこともできます。

以下は FastAPI 環境の設定例

# venvの作成、有効化
uv venv
source .venv/bin/activate

# ライブラリのインストール

uv pip install fastapi uvicorn

上記の設定で venv 及びライブラリのインストールが完了するので、後はその環境で実装していくという感じになります。

以下は FastAPI の利用例

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}
uvicorn main:app --reload

結論

uv を使うことでかなり高速な Python 環境を瞬時に構築することができます、ライブラリのインストールや venv 環境も一瞬で終わります。

とりあえず試してみてはどうでしょうか。

参考記事

Discussion