Aplicaciones Python ejecutables con PyInstaller
PyInstaller agrupa a una aplicación Python y todas sus dependencias en un solo paquete. El usuario puede ejecutar la aplicación empaquetada sin necesidad de instalar un intérprete de Python o ningún módulo.
PyInstaller lee el programa Python indicado, analiza su código para descubrir todos los módulos y bibliotecas que necesita para su ejecució, recopila copias de todos esos archivos, incluyendo el intérprete de Python, y los colocaen una sola carpeta, u opcionalmente en un solo archivo ejecutable.
PyInstaller se ha probado con Windows, Mac OS X y GNU / Linux. Sin embargo, no es un compilador cruzado: para hacer una aplicación de un sistema operativo, se debe ejecutar PyInstaller en ese mismo sisitema operativo.
Ventajas principales
- Funciona con cualquier versión de Python 2.7 / 3.5-3.7.
- Completamente multiplataforma, y utiliza el soporte del sistema operativo para cargar las bibliotecas, lo que garantiza una compatibilidad total.
- Empaqueta correctamente los principales paquetes de Python como numpy, PyQt4, PyQt5, PySide, Django, wxPython, matplotlib y otros listos para usar.
- Compatible con muchos paquetes de terceros.
Instalación
PyInstaller se encuentra disponible PyPI, por lo tanto se puede instalar con pip:
pip install pyinstallerSi existe una instalación de python 2.7 y otra de 3.X en el mismo equipo, instalar en la 3.X con :
pip3 install pyinstaller
Modo de uso
Utilizaremos para probar un archivo llamado archivo-tk.py, con el siguiente código:
import
tkinteras
tk win=tk.Tk() win.title("Aplicación TK"
) win.mainloop()
Lo único que hace es 3/2/2020 18:08:42 p. m.iportar la biblioteca tkinter y crear una ventana. Para generar la distribución utilizaremos el siguiente comando:
pyinstaller archivo-tk.py
PyInstaller analiza el archivo-tk.py y:
- Escribe el archivo de especificacionesarchivo-tk.spec en la misma carpeta que el archivo-tk.py.
- Crea una carpeta build en la misma carpeta que el archivo-tk.py si no existe.
- Escribe algunos archivos log y archivos de trabajo en la carpeta build.
- Crea una carpeta dist en la misma carpeta que el archivo-tk.py si no existe.
- Crea la carpeta archivo-tk.py y el archivo-tk ejecutable en la carpeta dist.
En la carpeta dist encontrará la aplicación y dependecias para distribuir a los usuarios.
Algunos parámetros
-D, --onedir
Crea un paquete de una carpeta conteniendo un archivo ejecutable (defecto).
-F, --onefile
Crea un paquete de un archivo ejecutable.
--specpath DIR
Carpeta para almacenar el archivo de especificaciones .spec generado (predeterminado: directorio actual).
-n NAME, --name NAME
Nombre para asignar al paquete de aplicación y al archivo de especificaciones ,spec (predeterminado: nombre de archivo .py).
-c, --consolse, --nowindowed
Abre una ventana de consola para E / S estándar (predeterminado).
-w, --windowed, --noconsole
Windows y Mac OS X, no abriran una ventana de consola para E / S estándar. Esta opción se ignora en los sistemas * NIX.
Si ahora utilizamos pyinstaller con los parámetros --noconsole --onefilepyinstaller --noconsole --onefile archivo-tk.py
Podremos notar la diferencias:
- Crea una carpeta dist en la misma carpeta que el archivo-tk.py si no existe, y sólo el archivo-tk ejecutable dentro de ella
- Al ejecutarse el archivo-tk no se abre la consola
Este y otros contenidos los podés aprender en el Curso de Python