extras(オプション機能)を含む依存関係
requests[security]やcelery[redis,msgpack]のようなextrasを含むrequirements.txtエントリをpyproject.tomlフォーマットに変換する方法。Pythonパッケージングでのextrasの仕組みを学びます。
Advanced Features
詳細な説明
extras(オプション依存関係またはフィーチャーフラグとも呼ばれる)により、パッケージはオプションの依存関係セットを宣言できます。extrasを付けてパッケージをインストールすると、その機能に固有の追加依存関係が含まれます。
extrasを含むrequirements.txt:
requests[security]>=2.31
celery[redis,msgpack]>=5.3
sqlalchemy[asyncio]>=2.0
uvicorn[standard]>=0.24
boto3[crt]>=1.28
pyproject.tomlに変換:
[project]
dependencies = [
"requests[security]>=2.31",
"celery[redis,msgpack]>=5.3",
"sqlalchemy[asyncio]>=2.0",
"uvicorn[standard]>=0.24",
"boto3[crt]>=1.28",
]
便利なextrasを持つ一般的なパッケージ:
- requests[security] -- 強化されたTLSのために
pyOpenSSL、cryptography、certifiを追加 - celery[redis] -- Celeryのブローカーバックエンドとして
redisを追加 - sqlalchemy[asyncio] --
greenletによる非同期サポートを追加 - uvicorn[standard] -- 最適なパフォーマンスのために
httptools、uvloop、websocketsを追加
複数のextrasは角括弧内のカンマ区切りリストで指定します:celery[redis,msgpack]はRedisブローカーとMessagePackシリアライゼーションの両方のサポートをインストールします。
構文はrequirements.txtとpyproject.tomlの両方で同一です。変更されるのは周囲の構造(フラットな行 vs TOML配列)のみです。
ユースケース
Redis付きCelery、非同期サポート付きSQLAlchemyなど、複数のextras付きパッケージを使用するマイクロサービスプロジェクトをrequirements.txtからモダンなpyproject.tomlに変換する。