pip install test dependencies for tox from setup.py

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 = [
extras = {
    'test': test_deps,

    # Other metadata...

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:

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.

Leave a Comment