🐍

uv, Ruff でPython開発環境を整える

に公開

はじめに

uv と Ruff を使用したPython開発環境のセットアップ例を紹介します。

https://github.com/wasabina67/uv-ruff-example

uv とは

  • uvは、Rust製の高速なPythonパッケージインストーラー兼リゾルバー
  • pip や poetry の代替として使用可能で、従来のツールより大幅に高速
  • プロジェクトの依存関係管理と仮想環境の作成を簡単に行える

Ruff とは

  • Ruffは、Rust製の高速なPythonリンター&フォーマッター
  • flake8、isort、pyupgrade などの複数ツールの機能を統合
  • 従来のツールと比較して、10〜100倍高速に動作

プロジェクトのセットアップ

1. プロジェクトの初期化

uv init --app --python 3.12
  • --app: アプリケーションプロジェクトとして初期化
  • --python 3.12: Python 3.12を指定

2. 依存関係の追加

本番用パッケージの追加:

uv add numpy

開発用パッケージの追加:

uv add --dev ruff

3. 依存関係の同期

uv sync

Ruff の使い方

コードチェック

uv run ruff check .

自動修正

uv run ruff check --fix .

コードフォーマット

uv run ruff format .

pyproject.toml の設定例

[tool.ruff]
target-version = "py312"
line-length = 120

[tool.ruff.lint]
select = [
    "E",   # pycodestyle errors
    "W",   # pycodestyle warnings
    "F",   # pyflakes
    "I",   # isort
    "N",   # pep8-naming
    "UP",  # pyupgrade
    "B",   # flake8-bugbear
    "C4",  # flake8-comprehensions
    "SIM", # flake8-simplify
]

[tool.ruff.format]
indent-style = "space"
quote-style = "double"

プログラムの実行

仮想環境をアクティベートせずに実行:

uv run python main.py

または、仮想環境をアクティベートして実行:

source .venv/bin/activate
python main.py
deactivate

まとめ

  • uv: 高速なパッケージ管理とプロジェクト初期化
  • Ruff: 高速なリント&フォーマット
  • 両ツールともRust製で、従来のツールより大幅に高速
  • pyproject.toml で一元的に設定管理が可能

これらのツールを組み合わせることで、効率的で快適なPython開発環境を構築できます。

GitHubで編集を提案

Discussion