環境マーカー(プラットフォーム固有の依存関係)
python_versionやsys_platformのようなPEP 508環境マーカーを含むrequirements.txtエントリをpyproject.tomlに変換する方法。プラットフォーム固有の依存関係を正しく処理します。
Advanced Features
詳細な説明
環境マーカー(PEP 508)を使用すると、対象環境に基づいて条件付きで依存関係を含めることができます。一般的なマーカーにはpython_version、sys_platform、os_name、implementation_nameがあります。
マーカー付きrequirements.txt:
gunicorn>=21.2 ; sys_platform != "win32"
uvloop>=0.19 ; sys_platform != "win32"
winloop>=0.1 ; sys_platform == "win32"
typing-extensions>=4.8 ; python_version < "3.12"
tomli>=2.0 ; python_version < "3.11"
pyproject.tomlに変換:
[project]
dependencies = [
"gunicorn>=21.2 ; sys_platform != 'win32'",
"uvloop>=0.19 ; sys_platform != 'win32'",
"winloop>=0.1 ; sys_platform == 'win32'",
"typing-extensions>=4.8 ; python_version < '3.12'",
"tomli>=2.0 ; python_version < '3.11'",
]
利用可能な環境マーカー:
| マーカー | 説明 | 値の例 |
|---|---|---|
python_version |
Pythonメジャー.マイナー | "3.11"、"3.12" |
sys_platform |
OSプラットフォーム文字列 | "linux"、"win32"、"darwin" |
os_name |
OS名 | "posix"、"nt" |
platform_machine |
CPUアーキテクチャ | "x86_64"、"aarch64" |
一般的なパターン:
- クロスプラットフォームサーバー:Linux/macOSでは
gunicorn、Windowsではwaitress - バックポートパッケージ:Python < 3.11の場合のみ
tomliを含める(tomllibがstdlibに追加された時) - パフォーマンスパッケージ:Windows以外のプラットフォームでのみ
uvloopをインストール
マーカーは変換時にそのまま保持されます。
ユースケース
Windows、Linux、macOS向けのプラットフォーム固有の依存関係と、Pythonバージョンのバックポートパッケージを含むクロスプラットフォームCLIツールのrequirementsを変換する。