Ir al contenido

Empaqueta tu app

Tu app funciona en tu máquina. Ahora quieres mandarla a alguien que no tiene Python, no sabe qué es pip y debería poder abrirla con doble clic. Este tutorial lleva una app desde una carpeta de proyecto hasta un archivo que puedes compartir, y luego a una compilación automática para los tres sistemas.

Objetivo Tiempo Nivel Necesitas
Una app que se abre con doble clic en Windows, macOS y Linux 30 minutos (más el tiempo de compilación) Avanzado · línea de comandos uv instalado, una cuenta de GitHub para la última parte
  • Crear (o convertir en) un proyecto de Pyzed: la estructura que espera pyzed build.
  • Generar un ejecutable independiente para el sistema en el que estás.
  • Añadir un icono, archivos de datos y un nombre, y leer los archivos incluidos desde tu código.
  • Compilar todas las plataformas a la vez con GitHub Actions, y por qué importa firmar.
  1. Parte de un proyecto. pyzed build empaqueta un proyecto de uv cuyo formulario o script principal está definido en pyproject.toml. Crea uno (o usa Nuevo proyecto en la ventana de bienvenida de Pyzed Design):

    Windows, macOS y Linux
    uvx --from pyzed-ui pyzed new my-app
    cd my-app
    uv run pyzed run # pruébala

    ¿Ya tienes un proyecto de uv? Ejecuta pyzed init dentro. La interfaz vive en ui/ (formularios y sus manejadores) y el backend en src/my_app/.

  2. Compila para este ordenador. Desde la carpeta del proyecto:

    Windows, macOS y Linux
    uv run pyzed build

    La primera compilación tarda un minuto o dos. El resultado va a dist/:

    Compilado en Obtienes Compártelo como
    Windows dist\my-app\my-app.exe Un zip de la carpeta, o un instalador (Inno Setup, WiX)
    macOS dist/my-app.app Un zip o un .dmg, firmado y notarizado
    Linux dist/my-app/my-app Un tarball, AppImage, .deb o Flatpak
  3. Pruébala como lo haría un usuario. Copia la carpeta a otro sitio (o a otra máquina sin Python) y abre el ejecutable. Si se cierra enseguida, compila con --console para ver el error.

  4. Nombre, icono y archivos de datos. Añade una tabla [tool.pyzed.build] a pyproject.toml:

    pyproject.toml
    [tool.pyzed.build]
    name = "Notes" # el nombre del ejecutable
    icon = "assets/icon.ico" # .ico en Windows, .icns en macOS
    include = ["assets", "data/help.md"] # archivos que tu app lee al ejecutarse

    Dentro del paquete, busca esos archivos desde la raíz del paquete:

    import sys
    from pathlib import Path
    ROOT = Path(getattr(sys, "_MEIPASS", Path(__file__).resolve().parents[1]))
    help_text = (ROOT / "data" / "help.md").read_text()
  5. ¿Un archivo o una carpeta? pyzed build --onefile crea un único archivo, práctico para enviar, pero más lento al arrancar (se descomprime cada vez) y marcado más a menudo por los antivirus. Una carpeta más un instalador es la opción más segura para una versión real.

  6. Todas las plataformas desde CI. Una compilación solo funciona en el sistema en el que se hizo, así que necesitas máquinas Windows, macOS y Linux. GitHub las tiene:

    Ventana de terminal
    uv run pyzed build --workflow # escribe .github/workflows/build.yml
    git add .github && git commit -m "Build on every platform" && git push
    git tag v1.0.0 && git push --tags # una etiqueta v* lanza la compilación

    Cada ejecución guarda las tres carpetas dist/ como artefactos para descargar.