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.7"
django = "^2.2"
requests = "^2.22"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
Adozione
Poetry si sta imponendo come scelta per nuovi progetti Python, specialmente librerie e applicazioni web. Condivide lo spazio con pipenv, alternativa a pip + virtualenv su cui Poetry tenta un approccio più solido.
Riferimenti: Poetry 1.0 (12 dicembre 2019). Sébastien Eustace. Licenza MIT. pyproject.toml (PEP 518, 621). SAT solver resolver.
