PyInstaller: Crear un ejecutable en python para Windows

Aprende a crear con PyInstaller un ejecutable en python para Windows. Podrás crear un .exe para distribuir fácilmente tus aplicaciones Windows desarrolladas en Python.

Cuando desarrollamos una aplicación python, y tenemos que distribuirla para usuarios de Microsoft Windows no familiarizados con python y desarrollo, a veces lo mas sencillo es empaquetarlo en un archivo ejecutable .exe y enviarlo. El usuario simplemente tendrá que hacer doble click en el archivo y ejecutarlo. En esta entrada te enseño a crear fácilmente un ejecutable en python para Windows.

En esta entrada encontrarás:

  1. Qué necesitas para crear un ejecutable en Windows de tus aplicaciones en python.
  2. Cómo crear un .exe que contenga absolutamente todo lo necesario para ejecutar la aplicación.
  3. Como utilizar un entorno virtual para conseguir un .exe optimizado con el mínimo tamaño necesario.

Requisitos previos

Tener instalado python y venv en Windows, si ya has creado alguna aplicación en python probablemente este requisito ya lo tienes. En mi caso he utilizado python en Windows 10, si no lo tienes instalado puedes seguir este tutorial.

En este ejemplo asumiremos que ya tienes una aplicación en un archivo «main.py»

Crear un entorno virtual

Lo primero es crear un entorno virtual para compilar la aplicación con los mínimos paquetes necesarios. Crearemos un entorno virtual con venv, llamado venv. Si quieres entender mejor cómo funciona venv, consulta la documentación oficial en este aquí. Desde la carpeta dónde se encuentre el archivo de python con tu aplicacion:

python -m venv venv

A veces en Windows, si tienes pylauncher tienes que usar py en lugar de python:

py -m venv venv

Activa el entorno virtual que acabas de crear:

venv\Scripts\activate.bat

Instalar los paquetes necesarios

Actualiza pip en el entorno virtual:

python -m pip install --upgrade pip #tambien pip install --upgrade pip

Instala todos los paquetes necesarios para tu aplicación y por último instala también pyinstaller. Debes instalar únicamente los paquetes imprescindibles para tu aplicación, en este caso, por ejemplo pandas y pyside2:

pip install pandas
pip install pyside2
pip install pyinstaller

Crea un archivo requirements.txt que contiene una lista de los módulos instalados:

pip freeze > requirements.txt

Crea el ejecutable con PyInstaller

Comprueba que tu aplicación funciona con los módulos instalados ejecutándola como habitualmente en python:

python main.py # Sustituye main.py por el nombre del script de tu aplicación

Crea un nuevo archivo de python que llame a pyintaller para crear tu exe, en la misma carpeta de tu aplicación, lo puedes llamar build_exe.py y con el siguiente contenido:

import PyInstaller.__main__

PyInstaller.__main__.run([
    'my_script.py',
    '--onefile',
    '--console', # or --windowed if you don´t need windows command line
    '--name',
    'AppName',
    '--clean'
])

Ejecuta para el script para crear el exe:

python build_exe.py

Si todo va bien, encontrarás el exe en la carpeta ‘dist’.

También puedes crear el ejecutable lanzando directamente pyinstaller desde la línea de comandos:

pyinstaller --onefile --console --name AppName --clean main.py #Sustituye main.py por el nombre de la aplicación

Deja un comentario

Responsable: MRDt3c. Finalidad de la recogida y tratamiento de los datos personales: gestionar la aceptación y publicación de tu comentario en esta página. Legitimación: Necesario para publicar y gestionar los comentarios. Datos: Nombre, email y un fragmento de la dirección IP. Destinatarios: Los datos no serán cedidos salvo obligación legal. Transferencias internacionales no están previstas. Derechos: podrás acceder, rectificar, limitar y suprimir tus datos escribiéndome a daniel(at)mrdt3c.es, así como presentar una reclamación ante una autoridad de control.