Best practice in packaging is to let the declared dependencies ("install_requires" in setup.py) as loose as possible, in contrast to the pinned versions in "requirements.txt". This is so as not to create gratuitous conflicts with other packages loaded into the same virtual environment.