Djangoプロジェクトの依存関係の変換

Djangoウェブアプリケーションのrequirements.txtをpyproject.tomlに変換する完全な例。データベースドライバー、RESTフレームワーク、Celery、デプロイメント依存関係を含みます。

Real-World Projects

詳細な説明

Djangoプロジェクトは通常、ウェブフレームワーク、データベースドライバー、キャッシュ、タスクキュー、デプロイメントツールにまたがる豊富な依存関係セットを持ちます。

Django requirements.txt:

# コア
Django>=4.2,<5.0
djangorestframework>=3.14
django-cors-headers~=4.3

# データベース
psycopg2-binary>=2.9
django-redis>=5.4

# タスクキュー
celery[redis]>=5.3

# デプロイメント
gunicorn>=21.2 ; sys_platform != "win32"
sentry-sdk[django]>=1.39

pyproject.tomlに変換:

[project]
name = "my-django-app"
version = "1.0.0"
requires-python = ">=3.10"

dependencies = [
    "Django>=4.2,<5.0",
    "djangorestframework>=3.14",
    "django-cors-headers~=4.3",
    "psycopg2-binary>=2.9",
    "django-redis>=5.4",
    "celery[redis]>=5.3",
    "gunicorn>=21.2 ; sys_platform != 'win32'",
    "sentry-sdk[django]>=1.39",
]

pyproject.tomlでのDjangoベストプラクティス:

  1. Djangoメジャーバージョンを固定 -- >=4.2,<5.0でLTSブランチ内に留まる
  2. extrasを使用 -- sentry-sdk[django]のようなフレームワーク統合
  3. 環境マーカーを追加 -- gunicornのようなデプロイメント専用パッケージ
  4. 開発依存関係を分離 -- [project.optional-dependencies]グループに
  5. requires-pythonを設定 -- DjangoのサポートするPython最小バージョンに合わせる

ユースケース

hatchやpdmを使用したビルド管理の採用に伴い、本番Djangoアプリケーションをrequirements.txtからpyproject.tomlに近代化する。

試してみる — Requirements ↔ Pyproject

フルツールを開く