Como generar ejecutable .exe con Python

En este artículo, se mostrará cómo convertir cualquier tipo Python en un ejecutable .exe utilizando Pyinstaller. Este proceso es útil para distribuir aplicaciones basadas en Python de manera sencilla, permitiendo que los usuarios las ejecuten sin necesidad de tener Python instalado.

⚙️ Prerequisitos

Antes de comenzar, asegúrate de tener instalado Python en tu sistema.

💡 Tip: Puedes obtener la última versión de Python desde su página principal.

🛠️ Instalación de Pyinstaller

Para generar el bundle y construir el ejecutable, primero necesitamos instalar Pyinstaller. Ejecuta el siguiente comando en la terminal:

pip install pyinstaller

🚀 Generación de archivo ejecutable (.exe)

Una vez instalado Pyinstaller, podemos generar un archivo ejecutable de nuestro programa siguiendo estos sencillos pasos:

  1. Abrir la terminal.
  2. Acceder a la ruta de nuestro script .py.
  3. Ejecutar Pyinstaller:
pyinstaller --onefile script.py

💡 Nota: Cuando se ejecuta Pyinstaller sin la opción –onefile, genera una carpeta dist que contiene varios archivos, incluyendo el ejecutable principal y otros archivos necesarios para que funcione. Este enfoque es útil si prefieres que los archivos estén distribuidos en una estructura de carpetas en lugar de un único archivo ejecutable.

📄 Uso de un fichero .spec

El archivo .spec en el contexto de PyInstaller es un archivo de configuración que permite personalizar y especificar cómo se construirá tu ejecutable. Tiene dos grandes beneficios:

  1. Personalización avanzada: Permite ajustar configuraciones que no están disponibles directamente desde la línea de comandos de PyInstaller. Esto incluye especificar módulos o paquetes adicionales (hiddenimports), archivos de datos que deben incluirse (datas), archivos ejecutables externos (exefiles), entre otros.
  2. Reutilización: Puedes mantener diferentes archivos .spec para diversas configuraciones de construcción, lo que facilita la gestión y consistencia en los procesos de compilación.

Configuración del fichero .spec

Dentro del archivo .spec, puedes especificar diferentes opciones y ajustes según las necesidades del proyecto. Algunas configuraciones comunes son:

  • datas: Para incluir archivos adicionales junto con el ejecutable.
  • hiddenimports: Para especificar módulos o paquetes adicionales que Pyinstaller no detecta automáticamente.
  • exefiles: Para especificar archivos adicionales que se deben incluir como parte del ejecutable.
  • icon: Para especificar un archivo de icono que se utilizará para el ejecutable.

Ejemplo de un archivo .spec:

# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['script.py'],
    pathex=[],
    binaries=[],
    datas=[('assets')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='appName',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    icon='assets/logo.ico',
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

🏗️ Generación de .exe utilizando .spec

Para generar el archivo .exe con las opciones configuradas en el archivo .spec, accede a la consola y ejecuta:

pyinstaller properties.spec