いろいろ備忘録日記

主に .NET とか Java とか Python絡みのメモを公開しています。最近Go言語勉強中。

Pythonメモ-86 (requirements.txtにて特定のOSの場合のみインストールするようにする)

概要

最近、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 ってしたときにエラーになります。

やり方

pip.pypa.io

上記ページに 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 で定義されています。

www.python.org

指定できるのは、他にもいろいろあって、xxx; python_version < 3.4

ような書き方もできます。


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com