Archivos Mensuales: agosto 2012

Crear ejecutable (“.exe”) de un programa Python

Programar en Python en nuestro GNU/Linux es una belleza. Pero cuando también nos toca soportar dicho Software en plataformas MS Windows lo vemos más complicado. O tal vez pueda darse el caso de que el profesor solicite entregar la tarea programada en un “.exe” y nos de la libertad de escoger el lenguaje de programación que nosotros queramos (cualquier relación con la realidad es pura coincidencia).

Pero por dicha podemos hacer un freeze de nuestros scripts en Python, es decir, empaquetar en un “.exe” nuestro programa, las bibliotecas Python que utiliza y el mismísimo intérprete Python con lo que podremos distribuir el Software y ejecutarlo sin la necesidad de tener que descargar Python para Windows primero.

Para ello necesitamos tener un MS Windows en el cual realizaremos lo siguiente:

  1. Instalar y configurar Python.
  2. Instalar como administrador Py2Exe.
  3. Crear script de distribución setup.py
  4. Llamar al script de distribución con el parámetro py2exe

Instalar y configurar Python

Es necesario descargar Python para Windows desde la página oficial.

Es importante descargarse la última versión de la rama 2.X ya que py2exe no está disponible para Python 3 todavía (y no creo que pronto). En mi caso para la máquina virtual (mi GNU/Linux es de 64bits, la máquina virtual de 32) descargué la versión Python 2.7.3 para 32bits, es decir Windows x86 MSI Installer.

Una vez descargado se ejecuta e instala para todos los usuarios. Recomiendo cambiar la ruta de C:\Python2.7 a C:\Program Files\Python2.7 por una cuestión de orden.

Una vez instalado se procede a configurar el PATH de Windows para que encuentre el ejecutable de Python, para así no tener que escribir toda la ruta del ejecutable cuando queramos correr un script. Para ello vamos al editor de variables de entorno de Windows. En Windows 7 es:

Inicio -> Click derecho en My Computer -> Propiedades -> Advanced System Settings -> Pestaña Advanced -> Botón Environment Variables

Editamos la que dice Path en el cuadro de variables de entorno y adjuntamos al final del string la ruta de la carpeta de instalación de Python, separándola con un punto y coma ; , es decir:

[lo que habia escrito];[ruta de instalacion python]

En mi caso:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Python2.7

Ok, ok, ok. Ahora abrimos la PowerShell (que de Power no tiene nada si la comparas con Bash) y escribimos el comando python y debería iniciar el interprete. Para abrir la PowerShell ingresa al menú de inicio y busca PowerShell. Listo.

Instalar como administrador Py2Exe

Py2Exe es el paquete que hará la magia de crearnos nuestro “.exe”. Descargamos la última versión desde la página oficial para nuestra versión de Python y arquitectura: descargar.

En mi caso, es py2exe-0.6.9.win32-py2.7.exe.

Un vez descargado instalamos el paquete como administrador: click derecho - ejecutar como administrador. Si no lo ejecutamos como administrador el instalador se quedará congelado y no avanzará. Listo.

Crear script de distribución setup.py

Creamos un archivo Python llamado setup.py encargado de la distribución del Software. El estricto mínimo funcional sería:

from distutils.core import setup
import py2exe

setup(console=['nombrearchivo.py'])

Ahora bien un ejemplo más completo sería:

# -*- coding: utf-8 -*-

import sys
from distutils.core import setup

kwargs = {}
if 'py2exe' in sys.argv:
    import py2exe
    kwargs = {
        'console' : [{
            'script'         : 'nombrescript.py',
            'description'    : 'Descripcion del programa.',
            'icon_resources' : [(0, 'icon.ico')]
            }],
        'zipfile' : None,
        'options' : { 'py2exe' : {
            'dll_excludes'   : ['w9xpopen.exe'],
            'bundle_files'   : 1,
            'compressed'     : True,
            'optimize'       : 2
            }},
         }

setup(
    name='nombreproyecto',
    author='Nombre del autor',
    author_email='autor@correo.com',
    **kwargs)

Lo bueno de éste último es que creará realmente un único archivo .exe. Y la verdad se puede volver tan complejo como ustedes quieran. Toda la documentación de cada uno de éstos elementos pueden encontrarlo en la wiki de Py2Exe.

Llamar al script de distribución con el parámetro py2exe

Desde el PowerShell:

cd C:\Carpeta De Proyecto\

python setup.py py2exe

Y luego encontrarán el .exe en la carpeta dist/.

Saludos

Anuncios
Etiquetado ,