Convertir programas python en .app

imagen / PhotoAtelier
  
15 de Junio de 2014   0  

Una de las ventajas de programar interfaces de usuario en python es que podemos ejecutarlos en diferentes sistemas operativos como lo son: Windows, Mac OS X y Linux.

 

Actualmente existen herramientas que realizan la compilación del código fuente python y generan archivos empaquetados que brindan la posibilidad de distribuir nuestro software sin la necesidad de que los usuarios finales tengan que instalar cada una de las dependencias que utilizamos al momento de programar nuestras aplicaciones.

El día de hoy les mostrare cómo utilizar la herramienta “py2app” para compilar programas python en paquetes con extensión .app y correrlo en el sistema operativo de MAC en sus diferentes versiones.

La herramienta llamada “py2app”

Hola mundo con Tkinter.

Para este ejemplo vamos a utilizar un código básico de una interfaz realizada en Tkinter:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
root.title("Alex Dzul")
root.geometry("300x300")
app = Frame(root)
app.grid()
message = str("Hola Pythonízame")
lbl = Label(app, text = message)
lbl.grid()
root.mainloop()

Este código lo guardamos con el nombre “ejemplo.py” y para ejecutarlo podemos correrlo desde nuestra terminal:

$ python ejemplo.py

y tendremos como resultado la siguiente ventana:

ejemplo.py

 

Como podemos observar, hasta aquí no tenemos ningún problema ya que no tiene nada de extraño el código y el resultado obtenido es excelente.

Ícono de nuestra aplicación.

Ahora, ya que tenemos una UI en python, necesitamos encontrar una imagen que represente a esta aplicación. Las apps de MAC manejan la extensión “*.icns” para vincularlas a sus aplicaciones y para este ejemplo utilizaremos el siguiente ícono:

icon

 

En lo personal, recomiendo la página de IconFinder en el que podremos descargar íconos de manera gratuita en diferentes formatos, ahora si tenemos una imagen que no tiene la extensión necesaria, podemos utilizar  un programa que se llama img2icns que en pocos pasos nos ayuda a tener una imagen compatible para nuestra aplicación final.

Preparando el setup.py

Una vez que ya tenemos el ícono y el archivo “ejemplo.py” ahora necesitamos crear un archivo que se llama “setup.py” que contendrá lo siguiente:

from setuptools import setup
OPTIONS = {
 'iconfile':'icon.icns',
}
setup(
 app=["ejemplo.py"],
 options = {'py2app': OPTIONS},
 setup_requires=["py2app"],
)

Con esto ya tenemos todo listo y debemos tener algo similar a esto:

resultado_final

Compilando con py2app.

A continuación necesitamos ejecutar esta línea de comando en nuestra terminal:

$ python setup.py py2app

Si hemos realizado todos los pasos de manera correcta, la terminal comenzará a mostrar en pantalla el proceso de compilación de nuestra aplicación y no deberá tardar más de 1 minuto y al final tendremos el siguiente resultado:

 

Captura de pantalla 2014-06-15 a la(s) 14.36.47

 

Veremos 2 carpetas nuevas: el “build” y “dist” y dentro de la carpeta “dist” encontraremos el resultado esperado: un archivo llamado “ejemplo.app”

resultado_final

 

Que al darle clic podremos observar que abre la UI que programamos y también lo veremos en el dock de nuestra mac.

Captura de pantalla 2014-06-15 a la(s) 14.40.06

 

Espero que les sirva este post y que cuando deseen distribuir software lo puedan realizar con esta gran herramienta.

Si quieren adentrarse más a opciones avanzadas de py2app, les recomiendo leer su documentación oficial en:

http://pythonhosted.org/py2app/



Alex Dzul

FullStack Python / Django Developer. #jslove