🙌
【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