• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

python uv

date: 2024-11-09 excerpt: pythonのuvの使い方

tag: pythonuvryepoetry


pythonのuvの使い方

概要

  • pythonのuvは高速なパッケージ管理ツールで、依存解決エンジンもRust製
  • 実行時はPEP 723に対応しており、pythonファイル中のメタデータを参照して依存を解決する

ryeとの差分

  • ほぼ同じ機能(add, syncなど)を持つ
  • プロジェクト初期化時にsrc/project-nameというディレクトリ構造は作成されない
  • requirements.lockのファイルは作成されないが、pyproject.tomlとuv.lockが作成されるのでそのままパッケージとして使用可能

インストール

macOS/Linux

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

アップデート

$ uv self update

pythonとパッケージの管理

任意のバージョンのpythonをインストール

$ uv python install 3.10 3.11 3.12 3.13

使用可能なpythonバージョンの確認

$ uv python list

.python-versionファイルにバージョンを指定

$ uv python pin 3.13

パッケージの追加

$ uv add <package-name>

インストールされたパッケージの更新

$ uv sync --upgrade

パッケージのビルド

$ uv build

実行

pythonスクリプトの実行

$ uv run main.py

リモートのpythonスクリプトの実行

$ uv run https://example.com/script.py
  • gistのURLも指定可能

pyproject.tomlの例

  • project.scriptsにコマンドラインツールを登録可能
[project]
name = "your-project-name"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
  ...
]

[project.scripts]
screenshot = "utils.screenshot:main"
googlesearch = "utils.googlesearch:main"

[tool.uv]

コマンドラインツールの実行

$ uv run screenshot

dockerの設定

  • Using uv in Docker

Dockerfileの例

FROM python:3.13-slim

# uv の公式 distroless イメージからバイナリをコピー
# Lambda ベースイメージには pip が含まれないため、マルチステージコピーでインストールする
# https://docs.astral.sh/uv/guides/integration/docker/#installing-uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

COPY pyproject.toml uv.lock ./
COPY src/ ./src/

RUN uv pip install --system --no-cache .

CMD sh -c "uv run main.py"

参考

  • uv - github
  • uv (pythonパッケージマネージャー)の使い方 詳細版


pythonuvryepoetry Share Tweet