I've achieved this by committing a slight abuse of extra requirements. You were almost there trying the extras syntax, just that tests_require
deps aren't automatically available that way.
With a setup.py
like this:
from setuptools import setup
test_deps = [
'coverage',
'pytest',
]
extras = {
'test': test_deps,
}
setup(
# Other metadata...
tests_require=test_deps,
extras_require=extras,
)
You can then get the test dependencies installed with the extras syntax, e.g. from the project root directory:
$ pip install .[test]
Give that same syntax to Tox in tox.ini
, no need to adjust the default install_command
:
[testenv]
commands = {posargs:pytest}
deps = .[test]
Now you don't need to maintain the dependency list in two places, and they're expressed where they should be for a published package: in the packaging metadata instead of requirements.txt
files.
It seems this little extras hack is not all that uncommon.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…