Package management Python: un caos storico
Prima di Poetry la pila di tool Python era frammentata: setup.py (imperative), requirements.txt (no transitive resolution), virtualenv separato, pipenv con problemi di performance. Nessuno standard moderno equivalente a Cargo (Rust), npm (JS), bundler (Ruby).
Poetry, creato da Sébastien Eustace nel 2018, unifica tutto. La versione 1.0 è rilasciata il 12 dicembre 2019. Licenza MIT.
Cosa fornisce
- pyproject.toml come unico file di progetto (PEP 518/621)
- Lock file (
poetry.lock) deterministico, versionato - Resolver moderno con SAT solver
- virtual env gestito automaticamente
- Build & publish su PyPI con
poetry build && poetry publish - Dependency groups (dev, test, docs) separati
[tool.poetry]
name = "myapp"
version = "0.1.0"
[tool.poetry.dependencies]
python = "^3.10"
django = "^4.2"
requests = "^2.31"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4"
Adozione
Poetry diventa scelta popolare per nuovi progetti Python, specialmente libraries e applicazioni web. Condivide lo spazio con pipenv (declining), uv (successor emergente nel 2024), hatch (PyPA).
Riferimenti: Poetry 1.0 (12 dicembre 2019). Sébastien Eustace. Licenza MIT. pyproject.toml (PEP 518, 621). SAT solver resolver.
