Ir al contenido principal

Tres métodos para convertir un script de Python en un archivo EXE

Aprende qué es un archivo ejecutable y cómo convertir un script de Python en un archivo .exe utilizando PyInstaller, Nuitka y auto-py-to-exe.
Actualizado 15 ene 2026  · 7 min leer

En este artículo, te explicaré algunos de los casos en los que merece la pena convertir tu archivo Python en un ejecutable. También mostraré cómo convertir un archivo Python en un archivo ejecutable utilizando tres bibliotecas Python: Pyinstaller, Nuitka y auto-py-to-exe.

Clona este repositorio de Github para seguir este tutorial.

¿Por qué convertir Python a .exe?

Los archivos ejecutables, archivos guardados con la extensión .exe, se utilizan para instalar o ejecutar aplicaciones de software en ordenadores con el sistema operativo Windows. El archivo que permite a un ordenador con Windows ejecutar una aplicación es el archivo de información de programa ( .exe ).

Hay varias razones por las que es posible que desees convertir un programa Python en un archivo ejecutable. Veamos algunos ejemplos:

Actividad maliciosa

Desafortunadamente, a algunas personas en Internet les gusta difundir software malicioso para infectar los dispositivos de otras personas y robar su información. Una forma de contrarrestar a estas personas es evitar caer en sus estafas, lo que significa no descargar ni abrir ciegamente archivos .exe que no provengan de una fuente fiable.

Accesibilidad

Otra razón por la que es posible que desees convertir un archivo Python en un ejecutable es para compartir una aplicación con otros usuarios. Un programa típico de Python puede constar de varias dependencias que otro usuario tendría que instalar antes de poder ejecutar el programa. ¿Qué pasa si la persona no sabe programar? En tales casos, esperar que un usuario aprenda a programar antes de utilizar una aplicación puede ser poco razonable. Convertir un archivo Python en un archivo ejecutable permite a los usuarios acceder a tu programa sin necesidad de saber Python.

Protección del código fuente

Pero incluso si sabes cómo programar, convertir un archivo Python en un archivo ejecutable puede ser una buena opción para evitar que te roben el código. Un archivo ejecutable evita que se robe el código, ya que crea una versión compilada de tu código fuente, lo que hace que sea más difícil de comprender que el código fuente real.

Programación de tareas

También puedes programar una tarea en tu ordenador para ejecutar un archivo .exe a una hora determinada.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

Cómo convertir un script de Python en un archivo .exe 

Ahora que ya sabes qué son los archivos .exe y por qué es posible que desees convertir un archivo Python a un archivo .exe, veamos cómo hacerlo en Python. En esta sección, trataremos tres marcos: pyinstaller, nuitka y auto-py-to-exe.

Una cosa que hay que tener en cuenta es que auto-py-to-exe tiene problemas de compatibilidad conocidos con Python 3.11 y versiones posteriores, y por lo general solo es fiable hasta Python 3.10, a menos que utilices versiones más recientes específicas y dependencias cuidadosamente adaptadas.

Dicho esto, empecemos.

Preparación del guion

Esta demostración utilizará el conjunto de datos abiertos de Airbnb de la ciudad de Nueva York

Antes de que los científicos de datos puedan analizar un conjunto de datos, estos deben formatearse para que sean compatibles con las herramientas que utilizan. Por lo tanto, la creación de un esquema de validación define de manera eficaz todas las validaciones que se aplican a cada campo de forma declarativa. Este proceso puede ser bastante repetitivo. Para evitar que nuestros científicos de datos se dediquen a tareas repetitivas, hemos creado un script de validación automatizado que se ejecuta periódicamente. 

Nota: Ten mucho cuidado al utilizar rutas relativas si tu script debe leer datos. Es mejor que utilices rutas absolutas para garantizar que tu ejecutable funcione como se espera. 

import pandas as pd
from pandas.api.types import CategoricalDtype

def perform_validation(filename:str):
    """
    A function to validate inputs for NYC Airbnb Open data.
    """
    path_to_data = "../.."
    data = pd.read_csv(f"{path_to_data}{filename}")



    # Convert neighbourhood_group to type category
    neighbourhood_group_to_cat = CategoricalDtype(
        categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"],
        ordered=False
        )
 
    data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat)

    # Convert room_type to type category
    room_type_to_cat = CategoricalDtype(
        categories=["Entire home/apt", "Private room", "Shared room"],
        ordered=False
    )

    data["room_type"] = data["room_type"].astype(room_type_to_cat)

    # Convert last_review to datetime
    data["last_review"] = pd.to_datetime(data["last_review"])

    # Minimum nights a person can stay is one night
    assert data["minimum_nights"].min() >= 1

    # Minimum number of reviews is 0
    assert data["number_of_reviews"].min() >= 0
 
    # Minimum number of reviews per month
    assert data["reviews_per_month"].min() >= 0.00

    # Minimum amount of listings per host
    assert data["calculated_host_listings_count"].min() >= 1

    # Number of days when listing is available for books
    # Could be 0 if tennant has long term booking
    assert data["availability_365"].min() >= 0

    # Save validated data
    data.to_csv("validated_ab_nyc_2019.csv", index=False)

if __name__ == "__main__":
    # User inputs filename
    filename = input("Enter filename: ")
 
    # Ensure it's a string
    if not filename.isalpha():
        filename = str(filename)
 
    # Automated validation
    perform_validation(filename)

Nota: hemos copiado y pegado este script en los directorios pyinstaller, nuitka y auto-py-to-exe

# Directory structure
|   AB_NYC_2019.csv
|  
+---auto_py_to_exe
|   |   requirements.txt
|   |   validation.py         
+---pyinstaller
    |   requirements.txt
    |   validation.py

Cada directorio tiene su propio entorno virtual en el que hemos instalado los requisitos: consulta los requisitos de pyinstaller o los requisitos de auto-py-to-exe. Si estás siguiendo el código, asegúrate de crear un entorno virtual en el directorio pyinstaller y en el directorio auto-py-to-exe. 

A alto nivel, el script anterior contiene una función (más información sobre cómo escribir funciones en Python ) que lee un conjunto de datos y luego define el formato esperado de campos específicos en los datos. El siguiente paso es convertir este script de Python en un archivo ejecutable que se pueda ejecutar periódicamente para generar un conjunto de datos formateado. 

Método 1: Pyinstaller

Pyinstaller te permite convertir rápidamente un archivo Python en un archivo ejecutable desde tu terminal. Una vez que hayas creado tu entorno virtual e instalado los requisitos para tu script (incluido pyinstaller), simplemente abre el terminal y navega hasta el directorio donde se encuentra el archivo Python que deseas convertir. 

El siguiente paso es ejecutar el siguiente comando: 

pyinstaller --onefile validation.py

Inicialmente, verás varios registros, el último de los cuales dirá algo así como «completado con éxito», siempre que el archivo ejecutable se haya creado correctamente. 

archivo ejecutable en proceso de creación

Figura 1: Registros que muestran que se ha creado el archivo ejecutable y que se ha completado correctamente.

Al completar esta ejecución, se crearán dos nuevos directorios, build y dist, en el mismo directorio donde se encuentra el archivo Python. En el directorio dist, encontrarás el script validation.exe.

validación.exe en un conjunto de datos

Figura 2: Un GIF que muestra la ejecución de validation.exe en un conjunto de datos.

Para ejecutar el script, simplemente haz clic en él. Esto abrirá una consola que te pedirá que introduzcas el nombre del archivo de datos sobre el que deseas ejecutar la validación. Una vez que introduzcas el nombre del archivo, la consola se cerrará y los datos validados se crearán en el mismo directorio que el archivo validation.exe (véase la figura 2). 

Método 2: Nuitka

Nuitka es otra opción que vale la pena considerar. A diferencia de PyInstaller, que agrupa tu script de Python con el intérprete de Python, Nuitka compila tu código Python en código C. Esto se traduce en una mejor protección del código fuente, una ejecución potencialmente más rápida y, a menudo, archivos de menor tamaño. La contrapartida es un tiempo de compilación más largo y una mayor complejidad de configuración.

Instalación y configuración

Después de crear un entorno virtual e instalar Nuitka utilizando pip install nuitka, debes asegurarte de que tu sistema dispone de un compilador C. El compilador que necesitas depende de tu sistema operativo:

  • Windows: Descarga e instala Microsoft Visual C++ Build Tools (gratuito) desde el sitio web de Visual Studio, o utiliza MinGW.

  • macOS: Instala las herramientas de línea de comandos de Xcode con xcode-select --install

  • Linux: GCC suele venir preinstalado; si no es así, instálalo a través de tu gestor de paquetes.

Una vez instalado, Nuitka detectará automáticamente tu compilador. Si tienes problemas, asegúrate de que el compilador está en tu sistema PATH.

Conversión del script de validación con Nuitka

Convirtamos el mismo script de validación de Airbnb de Nueva York utilizando Nuitka, tal y como hicimos con PyInstaller y auto-py-to-exe. Para compilar nuestro script en un ejecutable, ejecuta:

python -m nuitka --onefile --follow-imports --include-package=pandas validation.py

Analicemos cada bandera:

  • --onefile: Crea un único archivo ejecutable (en lugar de un directorio con múltiples archivos y dependencias).

  • --follow-imports: Incluye automáticamente todos los módulos que importa tu script.

  • --include-package=pandas: Incluye explícitamente el paquete pandas (algunos paquetes no se detectan automáticamente, por lo que esto garantiza que se incluya).

A diferencia de PyInstaller, que tarda unos 30 segundos en completarse, Nuitka tardará bastante más, normalmente entre 5 y 15 minutos, dependiendo de la complejidad del código y la velocidad del sistema. Verás el resultado de la compilación en la terminal, que muestra el progreso a lo largo de la etapa de compilación en C.

Una vez completado, aparecerá un mensaje indicando que el archivo ejecutable se ha creado correctamente. El ejecutable compilado se crea en el mismo directorio que el archivo validation.py.

Haz doble clic en validation.exe o ejecútalo desde la línea de comandos. Se abrirá una ventana de consola que te pedirá que introduzcas un nombre de archivo, igual que con PyInstaller. Después de escribir AB_NYC_2019.csvy pulsar Intro, se ejecuta la validación, se cierra la consola y se crea un nuevo archivo validated_ab_nyc_2019.csv en el mismo directorio, exactamente igual que en la versión PyInstaller.

Método 3: auto-py-to-exe

El primer paso para crear un archivo ejecutable con auto-py-to-exe es ejecutarlo con el siguiente comando: 

auto-py-to-exe 

Esto debería mostrar una interfaz gráfica de usuario (GUI) que nos ayudará a convertir nuestro archivo Python en un archivo ejecutable. 

interfaz gráfica de usuario

Figura 3: La interfaz gráfica de usuario volvió a aparecer tras ejecutar el comando auto-py-to-exe. 

Nota: si no funciona, asegúrate de haber creado un entorno virtual en el directorio auto-py-to-exe y de haber instalado el archivo requirements.txt en tu entorno virtual utilizando el siguiente comando: pip install -r requirements.txt.

La interfaz gráfica de usuario tiene varios campos que debemos rellenar. Echemos un vistazo a cada uno y analicémoslos: 

  • Ubicación específica: En este campo, debes añadir la ubicación del script del archivo Python que deseas convertir en un ejecutable.  
  • Onefile: Aquí es donde seleccionas si deseas crear un único directorio o archivo. Un único directorio contendrá todas las dependencias necesarias para ejecutar tu script y un archivo ejecutable, mientras que si seleccionas «Un archivo» se creará un único archivo ejecutable. 
  • Ventana de la consola: La decisión entre una ventana de consola «basada en consola» o «basada en ventana» depende de lo que devuelva tu script. Por ejemplo, el script que hemos creado anteriormente requiere que el usuario introduzcas un nombre de archivo. Por lo tanto, se recomienda la solución «basada en consola», ya que esta abrirá la consola después de ejecutar el archivo ejecutable. Si no es necesario mostrar los resultados de la consola después de ejecutar el archivo ejecutable, entonces «Basado en ventana» es una buena opción. 

También se nos ofrecen otras opciones para configurar la creación de nuestro archivo ejecutable (por ejemplo, añadir iconos, archivos adicionales y mucho más). En esta sección, también puedes modificar la ruta donde deseas exportar los archivos generados por tu archivo ejecutable: para ello, selecciona la opción «Configuración» y busca el directorio de salida que prefieras. El último paso es seleccionar «Convertir .py a .exe» para convertir nuestro archivo Python. 

Mira el GIF de la figura 4 para ver cómo hemos configurado nuestro archivo ejecutable. 

Auto py a exe

Figura 4: Un GIF que muestra la configuración para auto-py-to-exe.

Cuando regresemos al directorio auto-py-to-exe, habrá un directorio llamado output: ahí es donde se encuentra el archivo validation.exe. Selecciona el archivo para ejecutarlo, lo que abrirá una consola que te pedirá que introduzcas un nombre de archivo:

archivo de validación ejecutable

Figura 5: La consola volvió tras ejecutar el archivo de validación ejecutable. 

Simplemente ingresa el nombre del archivo (en este ejemplo, « AB_NYC_2019.csv ») y presiona Intro. Esto cerrará la consola y creará un nuevo archivo en el directorio de salida (donde se encuentra el archivo ejecutable) llamado validated_ab_nyc_2019.csv.

PyInstaller frente a Nuitka

A continuación se muestrauna comparación entre Nuitka y PyInstaller con el mismo script de validación, junto con auto-py-to-exe como alternativa GUI:

Métrico

PyInstaller

auto-py-to-exe

Nuitka

Tamaño del ejecutable

promedio

promedio

Entre un 20 y un 30 % más pequeño.

Tiempo de construcción

promedio

promedio

16 veces más largo

Tiempo de arranque

~2 segundos

~2 segundos

~1 segundo

Tiempo de ejecución (tarea de validación)

~3 segundos

~3 segundos

~2,5 segundos

Protección del código fuente

Moderado

Moderado

Excelente

Python 3.8-3.10

✅ Excelente

✅ Excelente

✅ Excelente

Python 3.11+

✅ Excelente

⚠️ Problemas conocidos

✅ Excelente

PyInstaller y Nuitka ofrecen compatibilidad fiable con todas las versiones modernas de Python, mientras que auto-py-to-exe tiene problemas de compatibilidad conocidos con Python 3.11 y versiones posteriores. Nuitka produce ejecutables más pequeños y rápidos con una protección IP superior, pero el proceso de compilación es aproximadamente 16 veces más lento que PyInstaller.

Conclusión

En este artículo, has aprendido: 

  • ¿Qué es un archivo Python?
  • Qué es un archivo ejecutable y por qué puede ser útil 
  • Cómo convertir un script de Python en un ejecutable utilizando pyinstaller, una herramienta muy útil para quienes se sienten más cómodos con las operaciones de línea de comandos. 
  • Cómo convertir un script de Python en un ejecutable utilizando auto-py-to-exe, que proporciona a los usuarios una interfaz gráfica de usuario (GUI) para configurar cómo se debe crear el archivo ejecutable. 

Obtén más información sobre cómo puedes aprovechar Python para dedicarte a la ciencia de datos en DataCamp, en el programa de científico de datos asociado con Python.

Preguntas frecuentes

¿Puedes incluir archivos adicionales (por ejemplo, imágenes, archivos de configuración) en el ejecutable?

Sí, las tres herramientas te permiten agrupar archivos adicionales necesarios para tu script. Para PyInstaller y Nuitka, puedes utilizar la opción --add-data para especificar los archivos que deseas incluir. En auto-py-to-exe, hay una opción en la interfaz gráfica de usuario para añadir archivos en «Archivos adicionales». Asegúrate de especificar correctamente las rutas relativas o absolutas para que el ejecutable pueda acceder a estos archivos.

¿Cómo puedes añadir un icono personalizado al archivo ejecutable?

Puedes añadir un icono personalizado a tu ejecutable especificando un archivo .ico. Para PyInstaller, utiliza el indicador « --icon » seguido de la ruta de acceso a tu archivo .ico. En auto-py-to-exe, puedes configurar la ruta del icono en el campo «Icono» dentro de la interfaz gráfica de usuario. Nuitka también admite la bandera « --windows-icon-from-ico » (Desactivar el controlador de pantalla). Ten en cuenta que el archivo del icono debe estar en formato .ico.

¿Por qué tu archivo ejecutable es tan grande y cómo puedes reducir su tamaño?

Los archivos ejecutables pueden incluir todas las dependencias, bibliotecas y el intérprete de Python, lo que puede hacer que sean muy grandes. Para reducir el tamaño:

  • Utiliza la opción « --onefile » (Empaquetar todo en un único archivo) en PyInstaller o Nuitka para agrupar todo en un solo archivo.
  • Excluye las bibliotecas innecesarias utilizando la opción « --exclude-module » (Excluir bibliotecas no utilizadas) en PyInstaller o Nuitka.
  • Considera la posibilidad de utilizar herramientas como UPX para comprimir el ejecutable resultante (funciona con PyInstaller y auto-py-to-exe).
  • Considera la posibilidad de utilizar Nuitka, que suele generar ejecutables entre un 20 % y un 30 % más pequeños que PyInstaller.

¿Puedo crear un ejecutable para un sistema operativo diferente?

PyInstaller, auto-py-to-exe y Nuitka son específicos para cada plataforma. Para crear un ejecutable para un sistema operativo diferente, debes utilizar herramientas de compilación cruzada o configurar una máquina virtual o un contenedor para el sistema operativo de destino. Por ejemplo, para crear un ejecutable de Windows en Linux, puedes utilizar Wine o Docker con un entorno Windows.

¿Cuáles son las alternativas a pyinstaller y auto-py-to-exe?

Otras herramientas para crear ejecutables incluyen:

  • cx_Freeze: Una herramienta multiplataforma para crear ejecutables.
  • py2exe: Una herramienta específica para Windows que permite crear ejecutables a partir de scripts de Python.

Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Temas

Cursos para Python

Curso

Python intermedio

4 h
1.3M
Mejora tus conocimientos de ciencia de datos creando visualizaciones con Matplotlib y manipulando DataFrames con pandas.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

blog

Tutorial: cómo instalar Python en macOS y Windows

Aprende a instalar Python en tu equipo personal con este tutorial paso a paso. Tanto si eres usuario de Windows como de macOS, descubre varios métodos para iniciarte en Python en tu equipo.
Richie Cotton's photo

Richie Cotton

14 min

Tutorial

Tutorial sobre cómo ejecutar scripts en Python

Aprenda cómo puede ejecutar un script Python desde la línea de comandos, y también cómo puede proporcionar argumentos de línea de comandos a su script.
Aditya Sharma's photo

Aditya Sharma

Tutorial

Tutorial sobre la ejecución de scripts de Python en Power BI

Descubre las distintas formas de utilizar Python para optimizar el análisis, la visualización y el modelado de datos en Power BI.
Joleen Bothma's photo

Joleen Bothma

Tutorial

Tutorial de Excel en Python: La guía definitiva

Aprende a leer e importar archivos Excel en Python, a escribir datos en estas hojas de cálculo y a encontrar los mejores paquetes para hacerlo.
Natassha Selvaraj's photo

Natassha Selvaraj

Tutorial

Tutorial de módulos de Python: Importarlos, escribirlos y utilizarlos

Aprende a crear e importar módulos de Python. ¡Descubre las mejores prácticas, ejemplos y consejos para escribir código Python reutilizable, organizado y eficiente!

Nishant Kumar

Machine Learning Jobs Header

Tutorial

Cómo utilizar Pytest para pruebas unitarias

Explore qué es Pytest y para qué se utiliza mientras lo compara con otros métodos de prueba de software.
Kurtis Pykes 's photo

Kurtis Pykes

Ver másVer más