Creación de archivos ejecutables a partir de secuencias de comandos de Python con py2exe

En este tutorial, veremos cómo convertir un script de Python en un archivo .exe en Windows usando Py2Exe, con ejemplos.

Introducción

La ejecución de secuencias de comandos de Python requiere muchos requisitos previos, como tener instalado Python, tener una gran cantidad de módulos instalados, usar la línea de comandos, etc. mientras que ejecutar un archivo .exe es muy sencillo.

Si desea crear una aplicación simple y distribuirla a muchos usuarios, no es difícil escribirla como una secuencia de comandos breve de Python, pero se supone que los usuarios saben cómo ejecutar la secuencia de comandos y ya tienen Python instalado en su máquina.

Ejemplos como este muestran que existe una razón válida para convertir programas .py en programas .exe equivalentes en Windows. .exe significa "Archivo ejecutable", que también se conoce como Binario.

La forma más popular de lograr esto es usando el módulo py2exe. En este artículo, repasaremos rápidamente los conceptos básicos de py2exe y solucionaremos algunos problemas comunes. Para seguir, no se necesita un conocimiento avanzado de Python, sin embargo, deberá usar Windows.

Convertir un código de idioma interpretado en un archivo ejecutable es una práctica comúnmente llamada congelación.

Instalación de py2exe {#instalación de py2exe}

Para usar el módulo py2exe, necesitaremos instalarlo. Hagámoslo con pip:

1
$ pip install py2exe

Conversión de Python Script a .exe

Primero, escribamos un programa que va a imprimir un texto en la consola:

1
2
3
import math
print("Hannibal ante Portas")
print(factorial(4))

Ejecutemos los siguientes comandos en la línea de comandos de Windows para crear un directorio (exampDir), mueva el código que ya escribimos a dicho directorio y, finalmente, ejecútelo:

1
2
3
4
$ mkdir exampDir
$ move example.py exampDir
$ cd exampDir
$ py example.py

Esto debería generar:

1
2
Hannibal ante Portas
24

Siempre pruebe los scripts antes de convertirlos en ejecutables para asegurarse de que, si hay un error, no sea causado por el código fuente.

Instalación y configuración

Cree otro archivo llamado setup.py en la misma carpeta. Aquí guardaremos los detalles de configuración de cómo queremos compilar nuestro programa. Solo pondremos un par de líneas de código por ahora:

1
2
3
4
5
from distutils.core import setup # Need this to handle modules
import py2exe 
import math # We have to import all modules used in our program

setup(console=['example.py']) # Calls setup function to indicate that we're dealing with a single console application

Si estuviéramos tratando con una aplicación con una IU gráfica, reemplazaríamos console con windows así:

1
setup(windows=['example.py'])

Ahora abra el símbolo del sistema como administrador y navegue hasta el directorio que acabamos de mencionar y ejecute el archivo setup.py:

1
2
3
4
5
6
7
$ cd exampDir
$ python setup.py py2exe

running py2exe
*** searching for required modules ***
*** parsing results ***
...

dist carpeta

Si todo se hace correctamente, debería generar un subdirectorio llamado dist. En su interior, habrá algunos archivos diferentes dependiendo de su programa, y ​​uno de ellos debería ser example.exe. Para ejecutarlo desde la consola ejecuta:

1
$ example

¡Y será recibido por nuestra cita en latín, seguida del valor de 4!:

1
2
Hannibal ante Portas
24

O bien, puede hacer doble clic en él y se ejecutará en la consola.

Si desea agrupar todos los archivos, agregue bundle_files y compressed, y establezca zipfile en Ninguno así:

1
2
3
4
5
6
7
8
from distutils.core import setup
import py2exe

setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
    console = [{'script': "example.py"}],
    zipfile = None,
)

Y vuelva a ejecutar los comandos para generar el archivo .exe.

Ahora, sus usuarios finales pueden ejecutar sus scripts sin ningún conocimiento ni requisitos previos instalados en sus máquinas locales.

Solución de problemas

Los errores al convertir archivos .py a archivos .exe son comunes, por lo que enumeraremos algunos errores y soluciones comunes.

Cómo reparar archivos DLL faltantes después de usar py2exe

Un problema común con py2exe es que faltan .dll-s.

DLL significa "biblioteca de enlaces dinámicos", y no están allí solo para crear errores, lo prometo. Las DLL contienen código, datos y recursos que nuestro programa podría necesitar durante la ejecución.

Después de ejecutar .exe, si obtiene un error del sistema que dice algo como:

1
The program can't start because something.dll is missing from your computer. Try reinstalling the program to fix this problem. 

O la línea de comando dice:

1
ImportError: (DLL load failed: The specified module could not be found.)

La solución es encontrar el .dll faltante y pegarlo en su carpeta dist. Hay dos maneras de hacer esto.

  1. Busque el archivo en su computadora y luego cópielo. Esto funcionará la mayor parte del tiempo.
  2. Busque el .dll faltante en línea y descárguelo. Trate de no descargarlo de algún sitio web sospechoso.

¿Cómo generar ejecutables de 32/64 bits usando py2exe?

Para hacer un ejecutable de 64 bits, instale Python de 64 bits en su dispositivo. Lo mismo ocurre con la versión de 32 bits.

Cómo usar py2exe en Linux o Mac

py2exe no es compatible con Linux o Mac, ya que su objetivo es crear archivos .exe, que es un formato exclusivo de Windows. Puede descargar una máquina virtual de Windows tanto en Mac como en Linux, usar Wine o usar una herramienta diferente como Pyinstaller en Linux o py2app en Mac.

Conclusión

Para hacer que los proyectos de Python sean más fáciles de ejecutar en dispositivos Windows, necesitamos generar un archivo ejecutable. Podemos usar muchas herramientas diferentes, como Pyinstaller, auto-py-to-exe, cx_Freeze y py2exe.

Los archivos binarios pueden usar DLL-s, así que asegúrese de incluirlos en su proyecto.

Licensed under CC BY-NC-SA 4.0