Slightly opinionated, but nevertheless informed (imho) list of Python Packaging Best Practices, based on copious amounts of experience with many diverse Python projects, as a user and a packager.
This list seeks to be “tool” (solution) agnostic where possible, and describe things in terms of needs and outcomes, with the driving motivations being:
We'll flesh out the motivations and caveats later.
Note: setup.py means setup.py or setup.cfg or other equivalent one place that has your package metadata.
MANIFEST.in or setup.py:data_filessetup.py:licensesetup.py:python_requires. This should at least match your CI coverage.setup.py:extras_require) and test dependencies (setup.py:tests_require)extras_require[dev], not tests_require. They are not compulsory.>= version specs for distribution dependencies.MANIFEST.in and/or setup.py:packages