PyPI and PyPA#
Historically, Python packaging and dependencies handling was a mess. One of the issue was
about the tendencies to put everything in the same Python and abuse PYTHONPATH. Here,
we present modern Python packaging and installation methods.
- PyPA: its tools (Pip, Build, …), its PEPs and its official guide https://packaging.python.org 
About Packaging#
- A Python project: the raw source (repository or tarball, not only Python files), the sdist (an archive containing the source of a Python package) and the wheels (an archive containing the compiled Python package, specific to an OS/architecture and ready to be installed) 
- PEP 518 (pyproject.toml) and PEP 517 (frontends/backends and isolated builds) 
- A large diversity of choice for PEP 517 frontends (Pip, Build, PDM, …) and PEP 517 backends (setuptools, Flit, Meson, …) 
For users#
- PyPI (also known as the “cheese shop”) providing sdists and wheels 
- Virtual environments ( - venv, Virtualenv, …)
- Python project managers (PDM, UV, Hatch, Poetry, …) inspired from NodeJS and Rust tooling 
- Notions of declared requirements, freeze and lock files (result of the dependency resolution)