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ベストプラクティス:
- Djangoメジャーバージョンを固定 --
>=4.2,<5.0でLTSブランチ内に留まる - extrasを使用 --
sentry-sdk[django]のようなフレームワーク統合 - 環境マーカーを追加 --
gunicornのようなデプロイメント専用パッケージ - 開発依存関係を分離 --
[project.optional-dependencies]グループに requires-pythonを設定 -- DjangoのサポートするPython最小バージョンに合わせる
ユースケース
hatchやpdmを使用したビルド管理の採用に伴い、本番Djangoアプリケーションをrequirements.txtからpyproject.tomlに近代化する。