🙌

【Python】uvでパッケージ管理する

に公開

uvとは

  • pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv などを置き換える単一のツール。
    • pip 互換インターフェースが含まれています。
    • pip よりも 10~100倍高速
  • (rye や poetry と同様に)ロックファイルやワークスペースなどをサポートし、プロジェクトの依存関係と環境を管理します。
  • Python バージョンをインストールおよび管理します。
  • Python パッケージとして公開されたツールをインストールおよび、実行します。
  • curl または pip 経由(= Rust または Python なし)でインストール可能です。

Ruff の制作者である Astral によってサポートされています。
Github:astral-sh/uv

やってみる

インストール

参考:uvのインストール

実行
  • スタンドアローンインストーラーから
curl -LsSf https://astral.sh/uv/install.sh | sh
  • Homebrew(パッケージマネージャ)から ※著者はこれでやりました
brew install uv


確認

  • バージョン確認
uv --version

-> uv 0.6.14 ※4/19時点

プロジェクトに取り組む

参考:プロジェクトに取り組む

新しいプロジェクトの作成

uv init

実行
uv init hello-world

※上記コマンドは以下と同義

mkdir hello-world
cd hello-world
uv init


initで作成されるファイル群

.
├── .python-version
├── README.md
├── main.py
└── pyproject.toml


hello world

uv run main.py


結果

Using CPython 3.13.2 interpreter at: /opt/homebrew/opt/python@3.13/bin/python3.13
Creating virtual environment at: .venv
Hello from hello-world!

→仮想環境(.venv)を一緒に作成&アクティブされる。(控えめに言って、神すぎませんか???)

依存関係の管理

uv add {パッケージ名}

コマンドの実行

uv run ...

Flaskの起動

参考:クイックスタート

  • 準備
uv add flask
touch app.py
app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
  • 実行
uv run -- flask run -p 3000
  • 結果

ディストリビューションの構築

uv build

実行
rm main.py
uv build
  • 結果
...
Successfully built dist/hello_world-0.1.0.tar.gz
Successfully built dist/hello_world-0.1.0-py3-none-any.whl

Discussion