Packaging moderno in Python
Il panorama del packaging Python si è evoluto. Ecco l'approccio moderno che utilizza pyproject.toml.
Struttura del progetto
my_package/
├── pyproject.toml
├── README.md
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── core.py
└── tests/
└── test_core.py
pyproject.thumb
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "my-package"
version = "0.1.0"
description = "A useful package"
readme = "README.md"
requires-python = ">=3.11"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "you@example.com"}
]
dependencies = [
"requests>=2.28",
"pydantic>=2.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"mypy>=1.0",
"ruff>=0.1",
]
[project.scripts]
my-cli = "my_package.cli:main"
Costruire ed pubblicare
CODICE_BLOCCO_2
Flusso di lavoro di sviluppo
# Create virtual environment
python -m venv .venv
source .venv/bin/activate
# Install in editable mode with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Type check
mypy src/
# Lint
ruff check src/
Confronto degli strumenti
| Strumenti | Scopo |
|---|---|
hatch |
Costruisci, pubblica, gestisci ambienti |
poetry |
Gestione delle dipendenze + costruzione |
pdm |
PEP 582 pacchetti locali |
flit |
Pubblicazione semplice |