`pyproject.toml` como estándar moderno de configuración
Unifica build system, metadatos del proyecto y configuración de herramientas en un solo archivo siguiendo PEP 517, 518 y 621.
Unifica build system, metadatos del proyecto y configuración de herramientas en un solo archivo siguiendo PEP 517, 518 y 621.
Cómo instalar, fijar versiones, capturar dependencias con freeze y reproducir entornos con requirements.txt de forma confiable.
Estructura interna de un entorno virtual, qué hace `activate` al modificar PATH, y por qué `.venv` es un directorio desechable que no debe versionarse.
Qué es un entorno virtual, cómo resuelve los conflictos de versiones entre proyectos y por qué debes crearlo antes de instalar cualquier paquete.
Qué son los imports circulares, por qué el intérprete falla con módulos parcialmente inicializados y tres técnicas concretas para resolverlos.
Cómo `__init__.py` define paquetes regulares, cuándo usar namespace packages sin él, y qué papel real juega `__all__` en la API pública.
Diferencias mecánicas entre `import paquete.modulo` y `from . import modulo`, cuándo cada uno falla y por qué PEP 8 favorece los absolutos.
Cómo la variable `__name__` controla qué código se ejecuta al importar vs. al correr directamente, y por qué este patrón hace los módulos testeables.
Cómo Python construye `sys.path`, el rol de los entornos virtuales y archivos `.pth`, y por qué modificarlo en producción es casi siempre un error de diseño.
Un módulo es un archivo .py que Python ejecuta una vez al importar; sys.modules lo cachea y importlib.reload() fuerza una re-ejecución.