maphew

Python Setup.py

September 20, 2018

basically setup.py is for specifying a library's dependencies while requirements.txt is for specifying your app's dependencies. In other words the former is for stuff you put on PyPI and the latter is for what you install on e.g. your server when you deploy your code.

setup.py: Library dependencies
requirements.txt: App dependencies

I recommend defining an extras_require for dev in my setup.py, e.g.:

docs_require = ["sphinx"]
tests_require = ["pytest"]

setup(
    extras_require={
        "docs": docs_require,
        "tests": tests_require,
        "dev": docs_require + tests_require,
    }
)

You can then do pip install -e ".[dev]" to install your development dependencies and skip having a requirements.txt file.

From <https://snarky.ca/clarifying-pep-518/>