Les bonnes pratiques qui semblent les plus répandues, et que j'ai réussi à appliquer avec succès, semblent celles de [[https://readthedocs.org/projects/python-guide/downloads/pdf/latest/|The Hitchhiker's Guide to Python]] {{ :lang:python:structure:python_guide_documentation_v2018-12-21.pdf |Archive du 21/12/2018 le 27/01/2021}} Voir aussi la doc officielle [[https://packaging.python.org/en/latest/tutorials/packaging-projects/|Packaging Python Projects]] {{ :lang:python:structure:packaging_python_projects_-_python_packaging_user_guide_10_23_2025_12_44_26_pm_.html |Archive du 21/10/2025 le 23/10/2025}} ainsi que leur avis [[https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/|src layout vs flat layout]] {{ :lang:python:structure:src_layout_vs_flat_layout_-_python_packaging_user_guide_10_23_2025_12_48_28_pm_.html |Archive du 21/10/2025 le 23/10/2025}} sur la recommandation d'utiliser plutôt ''src/nom'' que juste ''nom'' à la racine. Soit un module s'appelant ''foobar'' : foobar +--docs | +--*.md | +--*.asciidoc | \--*.png +--foobar | \--*.py +--tests | \--*.py +--LICENSE +--README.md +--requirements.txt +--setup.py Exemple de ''setup.py'' : from setuptools import setup, find_packages with open('README.md') as f: readme = f.read() with open('LICENSE') as f: license = f.read() setup( name='sample', version='0.1.0', description='blablabla', long_description=readme, author='Name', author_email='e@mail.com', url='awesome.com', license=license, packages=find_packages(exclude=('tests', 'docs')) )