miércoles, 8 de agosto de 2012

Snake's Nest

Snake's Nest


Distribuye tus aplicaciones de python en windows

Posted: 08 Aug 2012 02:04 PM PDT

Python tiene la ventaja de ser multiplataforma, lo que se traduce en que tu aplicacion muy posiblemente pueda ser ejecutada en computadoras con Windows o Mac.

Pero, como hacer para que nuestro script, o aplicacion se convierta en un archivo ejecutable (.exe)?.

Para ésta tarea existen algunas herramientas como py2execx-freeze, yo en lo personal me he quedado muy a gusto con cx-freeze.

Pero antes de hablar sobre cómo convertir nuestra aplicacion en un .exe, tenemos que considerar el hecho de que el usuario podría no tener instalado el entorno de python o las librerias que requieres para tu aplicacion.

En mi caso uso Qt4 para el entorno gráfico, requiriendo así que se incluya la libreria pyqt4, ésto da pie a que se necesite un poco de espacio adicional en el producto final.

Es decir, si tu aplicacion pesa originalmente 1MB o menos (como en mi caso), terminará pesando 10 o 20MB por las librerias que se deben incluir.

Ya sera cuestion de cada quien si se decide incluir las librerias o pedirle al usuario que las instale por separado.

Pero bueno, a lo que vamos: Vamos a usar cx-freeze para crear el ejecutable de nuestra  aplicacion.

Lo primero es pasarnos a Windows (si lo tienes particion o en una máquina virtual) e instalar python y cx-freeze.

Ya teniendo éstas dos herramientas base, vamos a irnos al directorio de nuestra aplicacion mediante la consola de windows y vamos a crear ahí un script que es el que cx-freeze tomara para crear el ejecutable.

El archivo se va a llamar setup.py.

Y su contenido será más o menos el siguiente:

    import sys, os,imp  from cx_Freeze import setup, Executable    build_exe_options = {"packages": ["os"], "excludes": ["tkinter"],"include_files":["ui\images","imageformats","qt.conf","icon.ico"] }    base = None  if sys.platform == "win32":   base = "Win32GUI"    setup( name = "MonPy-Qt",   version = "1.5",   author="Focus Development"   description = "Conversor de Divisas",   options = {"build_exe": build_exe_options},   executables = [Executable("main.py", base=base,icon="icon.ico")])    

Éste es el script de mi aplicacion..

build_exe_options: Ésta lista son parametros que usará cx-freeze al compilar, que se incluye, que se excluye.

base: Se define para qué plataforma se compilará.

setup: Aqui se define una especie de receta donde se especifican aspectos como el nombre de la aplicacion, la version, author, descripcion, opciones (que son las que generamos con el primer parametro) y el ejecutable. Toma nota de lo primero que esta entre parentesis, éste es el script principal de tu aplicacion, lo que se ejecutará al dar doble clic en el *.exe , base e icono.

Ya que está terminado el script en la consola vamos a ejecutar lo siguiente:

python setup.py build

Y nos generará la carpeta build donde ya estará nuestro ejecutable listo para distribuir.

Y adicionalmente, puedes crear un sencillo instalador para windows con el siguiente comando:

python setup.py bdist_msi

Y te creara la carpeta dist con el instalador listo para ser distribuido.

Algo muy curioso (y que no he podido resolver), es que al abrir la aplicacion el antivirus (Avast), lo detecta como una posible amenaza.


Filed under: Python Tagged: cx-freeze, Python, QT, Windows

No hay comentarios:

Publicar un comentario

Sigue todas las entradas por email