Empaquetado moderno de Python

Cree y distribuya paquetes de Python con pyproject.toml y herramientas modernas

Empaquetado moderno de Python

El panorama del empaquetado de Python ha evolucionado. Este es el enfoque moderno que utiliza pyproject.toml.

Estructura del proyecto

my_package/
├── pyproject.toml
├── README.md
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── core.py
└── tests/
    └── test_core.py

pyproject.pulgar

[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"

Construcción y publicación

# Install build tools
pip install build twine

# Build package
python -m build

# Upload to PyPI
twine upload dist/*

Flujo de trabajo de desarrollo

# 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/

Comparación de herramientas

Herramientas Propósito
hatch Cree, publique y administre entornos
poetry Gestión de dependencias + edificación
pdm Paquetes locales PEP 582
flit Publicación sencilla