概要
pip install する際、依存する外部パッケージを選択してインストールできる extras_require 書き方を記します。
次のような状況において必要な外部パッケージを選択してインストールする場合に有効です。
- インストールされる外部パッケージを最小限にしたい。
- テストコードを実行するために必要なパッケージを含めたインストールを行いたい。
問題点として
pip install には様々な便利機能があるものの、公式ドキュメントや pip のドキュメントをよく見ないと書き方がわかりづらい。
setup.py の書き方
setup 関数の中に extras_require を加えます。
setup(
name="example",
...
install_requires=[ ← ここには必須となる外部パッケージを記載します。
"requests"],
extras_require={ ← ここにはオプション機能として、インストール時に追加したい機能向けの外部パッケージを辞書形式で記載します。
'test': ["nose"],
'doc': ["sphinx"],
}
)
extras_require
- 必須ではないオプション機能で使用する外部パッケージを
extras_require
に辞書形式で指定します。 - これらのオプション機能で使う外部パッケージは、インストール時に明示的に指定することでインストールされます。
- この例ではテストを実行する場合のみに必要になる
nose
とドキュメント生成を実行したい場合のみに必要になるsphinx
を指定しています。
pip install の書き方
extras_require のパッケージを pip install する場合は []
で extras のキー名を指定します。
次のようになります。
pip install example[test]
pip install example[doc]
pip install example
- 1番目はテストで使用する外部パッケージ込みのインストールを行います。
- 2番目はドキュメント生成のための外部パッケージ込みのインストールを行います。
- 両方同時に指定することもできます
example[test, doc]
- 3番目は必須外部パッケージ
requests
のみがインストールされます。
(応用例1) Dask
広く使われているパッケージ Dask ではこの仕組みを積極的に利用し、不要な外部パッケージを極力インストールしないような工夫がなされています。
開発中のアプリが扱う内容が多岐にわたり、それぞれ独立性が高い場合には、この手法で依存パッケージのインストールを最小限に抑えることができます。
(応用例2) GitHub から直接 pip install する
GitHub 上のリポジトリから直接ローカルにインストールすることも可能です。
$ pip install "git+https://github.com/dask/dask.git#egg=dask"[complete]
クォーテーションマークの囲まれ方に注意が必要です。