Hello here!

TL;DR: Should I use requirements.txt, or should I have my dependencies only listed inside setup.py?

Long version:

The two most common ways to have dependencies listed in a python package are either having them listed both in setup.py and requirements.txt files, or having them only listed in requirements.txt and then import them using some `parse_requirements` methods.

In the projects which I am currently working on there are five lists of requirements:
- requirements.txt
- requirements_test.txt
- requirements_dev.txt
- install_requires inside setup.py
- tests_require inside setup.py

I wanted to remove duplicities, so I thought about removing the setup.py lists and parse the dependencies from the requirements*.txt files.

But then I came across this, https://stackoverflow.com/a/28842733, which recommends using a `dev` entry in `extras_require` and then using `pip install -e .[dev]` to install them, which could be easily extended to also have a `pip install -e .[test]`.

I find this a very clean option, since it reduces the amount of files the repository and makes setup.py and makes setup.py self-contained.

Are any known drawbacks to this approach? Is it a good way to go?

Regards,
-- 
Carles Sala Cladellas
carles@pythiac.com / +34 666 278 679

https://www.pythiac.com
Pythia Consulting - Data Science as a Service