Saltar al contenido principal
InicioTutorialesPython

Dos métodos sencillos para convertir un archivo Python en un archivo Exe

Aprende qué es un archivo ejecutable y por qué puede ser útil, mientras ves cómo convertir un script de Python en un ejecutable utilizando auto-py-to-exe.
Actualizado feb 2024  · 6 min leer

Los archivos Python tienen dos métodos principales de ejecución: mediante el terminal o en un editor de texto/IDE de tu elección. Ten en cuenta que un archivo Python no es más que un programa o script escrito con código fuente Python y guardado con la extensión de archivo .py. Hay diferentes casos en los que puedes querer ocultar tu código fuente cuando compartes scripts de Python con otros. Una forma de conseguirlo es convertir tu archivo Python en un archivo ejecutable. 

En este artículo, trataremos algunos de los casos que justifican convertir tu archivo Python en un ejecutable. También mostraremos cómo convertir un archivo Python en un archivo ejecutable utilizando dos bibliotecas Python: Pyinstaller y auto-py-to-exe. 

Clona este repositorio de Github para seguir este tutorial. 

Por qué convertir Python en un 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 .exe

Hay varias razones por las que puedes querer convertir un programa Python en un archivo ejecutable. Veamos algunas:  

Actividad maliciosa

Por desgracia, 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 esta gente es evitar caer en sus estafas: esto significa no descargar ni abrir a ciegas archivos .exe que no procedan de una fuente fiable. 

Accesibilidad

Otra razón por la que puedes querer convertir un archivo Python en un ejecutable es compartir una aplicación con otros usuarios. El típico programa Python puede constar de varias dependencias que otro usuario tendría que instalar para que el programa pudiera ejecutarse. ¿Y si esa persona no sabe programar? En estos 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 saber Python. 

Salvaguardar el código fuente

Sin embargo, aunque sepan programar, convertir un archivo Python en un archivo ejecutable puede ser una buena opción para impedir que roben tu código. Un archivo ejecutable impide que roben el código porque 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 del trabajo

También puedes programar un trabajo en tu ordenador para que ejecute un archivo .exe a una hora determinada. 

Tutorial de conversión de Python a exe 

Ahora que sabes qué son los archivos .exe y por qué puedes querer convertir un archivo Python en un archivo .exe, veamos cómo hacerlo en Python. En esta sección veremos dos marcos: pyinstaller y auto-py-to-exe. 

Esta demostración utilizará el conjunto de datos New York City Airbnb open data

Para que los científicos de datos puedan analizar un conjunto de datos, los datos deben formatearse para que sean compatibles con las herramientas que utilizan. Así, al crear un esquema de validación se definen de forma declarativa todas las validaciones que se aplican a cada campo. Este proceso puede ser bastante repetitivo. Para que nuestros científicos de datos no tengan que realizar 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 asegurarte de que tu ejecutable funcione como esperas. 

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 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 requisitos de pyinstaller o requisitos de auto-py-to-exe. Si sigues el código, asegúrate de crear un entorno virtual en el directorio pyinstaller y en el directorio auto-py-to-exe. 

En general, el script anterior contiene una función (obté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 de los datos. El siguiente paso es convertir este script de Python en un archivo ejecutable que pueda ejecutarse periódicamente para generar un conjunto de datos formateado. 

Tutorial de 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 ve al directorio en el que se encuentra el archivo Python que deseas convertir. 

El siguiente paso es ejecutar este comando: 

pyinstaller --onefile validation.py

Al principio, verás varios registros, de los cuales el último dirá algo parecido a "completado correctamente", dado que el archivo ejecutable se ha creado correctamente. 

archivo ejecutable que se está creando

Figura 1: Registros que muestran que se está creando el archivo ejecutable y que esta operación se ha completado correctamente.

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

validation.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. Aparecerá una consola que te pedirá que introduzcas el nombre de archivo de los datos en los que deseas ejecutar la validación. Una vez introducido 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). 

Tutorial de Auto py to exe 

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

auto-py-to-exe 

Esto debería devolver 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 devuelta 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 e instalado requirements.txt en tu entorno virtual mediante el siguiente comando: pip install -r requirements.txt.

La GUI tiene varios campos que debemos rellenar. Echemos un vistazo a cada uno de ellos: 

  • Specific Location: En este campo, debes añadir la ubicación del script del archivo Python que deseas convertir en 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 "One File", se creará un único archivo ejecutable. 
  • Console Window: La decisión entre una ventana de consola "Console Based" o "Window Based" depende de lo que devuelva tu script. Por ejemplo, el script que hemos creado anteriormente requiere que el usuario introduzca un nombre de archivo. Por tanto, se recomienda la solución "Console Based", ya que esta abrirá la consola después de ejecutar el archivo ejecutable. Si no hubiera necesidad de mostrar las salidas de la consola después de ejecutar el archivo ejecutable, "Window Based" 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, etc.). En esta sección también podemos modificar la ruta a la que queremos exportar los archivos generados por nuestro archivo ejecutable: para ello, selecciona la opción "Settings" y ve al directorio de salida que quieras. El último paso es seleccionar "Convert .py to .exe" para convertir nuestro archivo Python. 

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

Auto py to exe

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

Cuando volvamos al directorio auto-py-to-exe, habrá un directorio llamado output: aquí es donde está nuestro archivo validation.exe. Selecciona el archivo para ejecutarlo, lo que hará que aparezca una consola que te pedirá que introduzcas un nombre de archivo:

archivo ejecutable de validación

Figura 5: Consola devuelta al ejecutar el archivo ejecutable de validación. 

Solo tienes que introducir el nombre del archivo (en este ejemplo, AB_NYC_2019.csv) y pulsar Intro. Esto cerrará la consola y creará un nuevo archivo en el directorio de salida (donde está el archivo ejecutable) llamado validated_ab_nyc_2019.csv.

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, que es una gran herramienta para los que 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 debe crearse el archivo ejecutable. 

Obtén más información sobre cómo podrías aprovechar Python para hacer ciencia de datos en el programa profesional Científicos de datos con Python de DataCamps.

Temas

Cursos para Python

Certificación disponible

Course

Intermediate Python

4 hr
1.1M
Level up your data science skills by creating visualizations using Matplotlib and manipulating DataFrames with pandas.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

Cómo aprender Python desde cero en 2024: Guía del experto

Descubre cómo aprender Python, sus aplicaciones y la demanda de conocimientos de Python. Comienza hoy tu andadura en Python ​con nuestra guía completa.
Matt Crabtree's photo

Matt Crabtree

19 min

Python 2 vs 3

Python 2 frente a 3: Todo lo que necesitas saber

En este artículo, trataremos las principales diferencias entre Python 2 y 3, cuál es el mejor y por cuál deberías decantarte para comenzar tu andadura en la ciencia de datos
Javier Canales Luna 's photo

Javier Canales Luna

6 min

Científico de datos vs. Ingeniero de datos

Explicación de las diferencias entre ingenieros de datos y científicos de datos: responsabilidades, herramientas, lenguajes, perspectivas laborales, salario, etc.
Karlijn Willems's photo

Karlijn Willems

11 min

if...elif...else en el tutorial de Python

Aprende a crear sentencias if...elif...else en Python.
DataCamp Team's photo

DataCamp Team

4 min

Tutorial de comprensión del diccionario Python

¡Aprende todo sobre la comprensión de diccionarios en Python: cómo puedes utilizarla para crear diccionarios, para sustituir los for loops (anidados) o las funciones lambda por map(), filter() y reduce(), ...!
Sejal Jaiswal's photo

Sejal Jaiswal

14 min

Clasificación de bosques aleatorios con Scikit-Learn

Este artículo trata de cómo y cuándo utilizar la clasificación Random Forest con scikit-learn. Centrado en conceptos, flujo de trabajo y ejemplos. También veremos cómo utilizar la matriz de confusión y las importancias de las características.
Adam Shafi's photo

Adam Shafi

14 min

See MoreSee More