• 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.11

RUN apt-get update -y \
  && apt-get install -y --no-install-recommends ca-certificates \
  && rm -rf /var/lib/apt/lists/*
RUN pip install --upgrade pip
RUN pip install uv

WORKDIR /app
COPY . /app/

COPY pyproject.toml uv.lock ./
#   /usr/local (=Debian 系の Python prefix) に直接インストールさせる
ENV UV_PROJECT_ENVIRONMENT=/usr/local
RUN uv sync --frozen --no-dev --no-editable

CMD sh -c "uv run main.py"

参考

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


pythonuvryepoetry Share Tweet