Ship your requirements.txt

Dependencies: they’re always changing.

Software is in such continuous flux. With this stream of change, maintainers can take a helpful step to inform users of dependency versions at the time of a release. By including a requirements.txt in a release, a maintainer can notify users of the state of the world when the package was released.

Python packages (or “distributions” if you want to use the official term) set dependencies in the setup.py file. A rule of thumb is to exclude version numbers in setup.py to avoid causing conflicts between packages. If my package says it requires requests==2.10.0 and your package says it requires requests==2.9.2, then users can run into trouble. Users who want to have to both my package and your package may run into trouble when installing.

By including a requirements.txt when you release a Python package on PyPI, you can tell users “Here are the versions of dependencies that I used when I declared my software fit for release.” Many strange environments exist in the world and including your dependency versions in a separate file can help future software archeologists figure out how to make your software work in strange places.