概要
最近、conda をやめて pip と venv の環境に戻ったのですが、requirements.txt で 特定のOSの場合のみインストールするようにしたいことがたまにあります。
Windows版が存在しないライブラリとかWindows版しか存在しないものなどの場合です。
例を上げると、 Twisted をWindowsでインストールする場合、pywin32 というライブラリが必要となります。
名前の通り、windows 専用なので、MacOSなどの場合にインストールできない。そのまま requirements.txt に
pywin32 twisted
って書いていると、Macで python -m pip install -r requirements.txt
ってしたときにエラーになります。
やり方
上記ページに requirements.txt の記述例があるのですが、以下のようにするとWindowsの場合のみインストールするようにできます。
pywin32; sys_platform == 'win32' twisted
当然、逆もできます。
ciso8601; sys_platform != 'win32'
最近の requirements.txt ってすごく利便性がよくなってますね。
他のファイルの内容も
# コメント -r requirements-other.txt
って感じで取り込んだりできるし。
ちなみに、上に出ている
pywin32; sys_platform == 'win32'
みたいな書き方は、environment marker
って名前があるようで PEP 508
で定義されています。
指定できるのは、他にもいろいろあって、xxx; python_version < 3.4
ような書き方もできます。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場