Compilación con build
Cree wheels y sdists
Compilación con build es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
Qué significa compilar
El código fuente debe convertirse en artefactos de distribución que pip pueda instalar. La herramienta moderna para hacerlo es build, que se ejecuta mediante python -m build.
Produce dos tipos de archivos: una distribución de código fuente y un wheel.
sdist frente a wheel
Hay dos tipos de artefactos:
- sdist (.tar.gz), un archivo de código fuente; pip lo compila al instalarlo
- wheel (.whl), un archivo ya compilado; pip solo lo descomprime
Los wheels se instalan más rápido y son los preferidos. El sdist es la alternativa y la fuente canónica.
Instalar la herramienta de compilación
Instálela una vez mediante pip install build. Es un frontend ligero: lee su pyproject.toml, configura un entorno aislado e invoca el backend de compilación para crear los artefactos.
No debe llamar directamente al backend; build se encarga de coordinarlo.
Ejecutar la compilación
Ejecute python -m build desde la raíz del proyecto. De forma predeterminada, crea un sdist y un wheel, y los coloca en un directorio nuevo llamado dist/.
Use --wheel o --sdist para compilar solo uno de ellos.
args = []
targets = []
if '--sdist' in args:
targets.append('sdist')
if '--wheel' in args:
targets.append('wheel')
if not targets:
targets = ['sdist', 'wheel']
print('Will build:', targets)Nombres de archivos wheel
Los nombres de los wheels codifican metadatos: mytool-0.1.0-py3-none-any.whl significa que el nombre es mytool, la versión es 0.1.0, se usa Python 3, no se requiere una ABI específica y es compatible con cualquier plataforma. Los paquetes escritos exclusivamente en Python reciben py3-none-any.
name = 'mytool'
version = '0.1.0'
wheel = name + '-' + version + '-py3-none-any.whl'
print(wheel)
print('Parts:', wheel[:-4].split('-'))Aislamiento de la compilación
De forma predeterminada, build crea un entorno virtual nuevo, instala los elementos de requires de su [build-system] y compila el paquete allí. Esto garantiza que la compilación no dependa accidentalmente de paquetes que simplemente estén presentes en su entorno.
Inspeccionar la carpeta dist
Después de una compilación, dist/ contiene sus artefactos. Enumerar su contenido confirma qué se ha producido antes de cargarlo. Es una operación habitual de listado de directorios.
dist = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in dist:
kind = 'sdist' if f.endswith('.tar.gz') else 'wheel'
print(kind.ljust(6), f)Comprobar un wheel
Un wheel no es más que un archivo ZIP. Puede descomprimirlo para verificar que sus módulos y archivos de datos estén presentes y que no falte nada importante. Si aquí falta un archivo, también faltará después de la instalación.
Compilaciones limpias
Los archivos obsoletos de build/ o dist/ pueden producir resultados confusos. Elimine estos directorios antes de una compilación para publicar exactamente lo que produce el código fuente actual.
stale_dirs = ['build', 'dist', 'mytool.egg-info']
for d in stale_dirs:
print('Remove before clean build:', d)Compilaciones reproducibles
El mismo código fuente debería producir siempre los mismos artefactos. Fije las versiones de su backend de compilación en [build-system] requires y evite obtener valores del entorno en ejecución. La reproducibilidad significa que un compañero o un servidor de CI obtiene exactamente el mismo resultado.
Combinada con las compilaciones limpias, elimina las sorpresas de que algo funcione en un equipo, pero no en otro.
Compilar en CI
La mayoría de los proyectos se compilan en un servidor de integración continua en lugar de hacerlo en un portátil. Una tarea de CI obtiene el código, ejecuta python -m build y almacena los artefactos. Esto garantiza que las versiones se generan siempre a partir de un estado conocido y limpio.
En CI se ejecuta exactamente el mismo comando que usa localmente.
Comprobación rápida
Compruebe sus conocimientos sobre compilación.
Recapitulación
Ha aprendido a compilar artefactos:
pip install buildy, después,python -m build- Produce un sdist (.tar.gz) y un wheel (.whl) en
dist/ - Las compilaciones se realizan en un entorno aislado mediante los requisitos de
[build-system] - Inspeccione el wheel y haga compilaciones limpias antes de publicar
Preguntas frecuentes
¿La lección «Compilación con build» es gratis?
Sí — el texto completo de «Compilación con build» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Compilación con build»?
Cree wheels y sdists Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Compilación con build»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura del proyecto y pyproject.toml
- Compilación con build
- Versionado y metadatos
- Publicación con twine