Creaci贸n de archivos ejecutables a partir de scripts de Python con py2exe

     

    Introducci贸n

    La ejecuci贸n de scripts de Python requiere una gran cantidad de requisitos previos, como tener Python instalado, tener una gran cantidad de m贸dulos instalados, usar la l铆nea de comandos, etc. mientras se ejecuta una .exe archivo es muy sencillo.

    Si desea crear una aplicaci贸n simple y distribuirla a muchos usuarios, escribirla como un breve script de Python no es dif铆cil, pero asume que los usuarios saben c贸mo ejecutar el script y tienen Python ya instalado en su m谩quina.

    Ejemplos como este muestran que existe una raz贸n v谩lida para convertir .py programas en equivalentes .exe programas en Windows. .exe significa “archivo ejecutable”, que tambi茅n se conoce como binario.

    La forma m谩s popular de lograr esto es mediante el py2exe m贸dulo. En este art铆culo, repasaremos r谩pidamente los conceptos b谩sicos de py2exe y solucionar algunos problemas comunes. Para seguir adelante, no se necesitan conocimientos avanzados de Python, sin embargo, tendr谩 que usar Windows.

    Convertir un c贸digo de lenguaje interpretado en un archivo ejecutable es una pr谩ctica com煤nmente llamada congelaci贸n.

    Instalaci贸n de py2exe

    Usar el py2exe m贸dulo, necesitaremos instalarlo. Hag谩moslo con pip:

    $ pip install py2exe
    

    Conversi贸n de Python Script a .exe

    Primero, escriba un programa que imprima texto en la consola:

    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), mover el c贸digo que ya escribimos a dicho directorio, y finalmente ejecutarlo:

    $ mkdir exampDir
    $ move example.py exampDir
    $ cd exampDir
    $ py example.py
    

    Esto deber铆a generar:

    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

    Hacer otro archivo llamado setup.py en la misma carpeta. Aqu铆 mantendremos los detalles de configuraci贸n sobre c贸mo queremos compilar nuestro programa. Solo pondremos un par de l铆neas de c贸digo por ahora:

    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 interfaz de usuario gr谩fica, reemplazar铆amos console con windows al igual que:

    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 setup.py archivo:

    $ cd exampDir
    $ python setup.py py2exe
    
    running py2exe
    *** searching for required modules ***
    *** parsing results ***
    ...
    

    carpeta dist

    Si todo se hace correctamente, esto deber铆a producir un subdirectorio llamado dist. Dentro de 茅l, habr谩 algunos archivos diferentes dependiendo de su programa, y 鈥嬧媢no de ellos deber铆a ser example.exe. Para ejecutarlo desde la consola ejecuta:

    $ example
    

    隆Y ser谩 recibido por nuestra cita en lat铆n, seguida del valor de 4 !:

    Hannibal ante Portas
    24
    

    O puede hacer doble clic en 茅l y se ejecutar谩 en la consola.

    Si desea agrupar todos los archivos, agregue bundle_files y compressed, y establecer zipfile a nadie as铆:

    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 prerrequisitos instalados en sus m谩quinas locales.

    Soluci贸n de problemas

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

    C贸mo reparar los archivos DLL que faltan despu茅s de usar py2exe

    Falta un problema com煤n con py2exe .dll-s.

    DLL significa “biblioteca de v铆nculos din谩micos”, y no est谩n ah铆 solo para generar errores, lo prometo. Las DLL contienen c贸digo, datos y recursos que nuestro programa puede necesitar durante la ejecuci贸n.

    Despu茅s de ejecutar el .exe, si recibe un error del sistema que dice algo como:

    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:

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

    La soluci贸n es encontrar lo que falta .dll y p茅guelo en su carpeta dist. Hay dos maneras de hacer esto.

    • Busque el archivo en su computadora y luego c贸pielo. Esto funcionar谩 la mayor parte del tiempo.
    • Encuentra lo que falta .dll 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 est谩 destinado a 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 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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *