背景
python で新しいパッケージを作成する場合、setup.py に install_requires を書いて、
bash
$ python setup.py develop
で依存パッケージをインストールしますよね。
ただしこれだと、文書生成でのみ依存する sphinx や、テストでのみ依存する py.test などを管理するには不便です。
extras_require を活用する
extras_require を利用すれば、コンテキスト依存の依存パッケージを定義することができます。
setup.py
from setuptools import setup
setup(
name='foo',
packages=['foo'],
install_requires=[
"flask",
],
extras_require = {
'test': ['pytest'],
'doc': ['sphinx'],
},
)
pip を用いて編集モードでパッケージをインストールすれば、 setup.py develop と同じようにして、テストや文書作成用のモジュールもインストールできます。
bash
$ pip install -e .[test]
##参考
- https://bitbucket.org/tarek/distribute/issue/130
- https://pip.pypa.io/en/latest/reference/pip_install.html#examples
bash
$ pip install SomePackage[PDF]
$ pip install SomePackage[PDF]==3.0
$ pip install -e .[PDF]==3.0 # editable project in current directory