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のためにpyOpenSSLcryptographycertifiを追加
  • celery[redis] -- Celeryのブローカーバックエンドとしてredisを追加
  • sqlalchemy[asyncio] -- greenletによる非同期サポートを追加
  • uvicorn[standard] -- 最適なパフォーマンスのためにhttptoolsuvloopwebsocketsを追加

複数のextrasは角括弧内のカンマ区切りリストで指定します:celery[redis,msgpack]はRedisブローカーとMessagePackシリアライゼーションの両方のサポートをインストールします。

構文はrequirements.txtpyproject.tomlの両方で同一です。変更されるのは周囲の構造(フラットな行 vs TOML配列)のみです。

ユースケース

Redis付きCelery、非同期サポート付きSQLAlchemyなど、複数のextras付きパッケージを使用するマイクロサービスプロジェクトをrequirements.txtからモダンなpyproject.tomlに変換する。

試してみる — Requirements ↔ Pyproject

フルツールを開く