MichaelSPeralta
Posted on October 25, 2024
Otra entrada técnica.
Contexto rapido, tengo un back y un front (bien bien beta) en python (flask). Los levanto el local en el browser.
El back levanta en el puerto flask run --port=5001
El front levanta en el puerto flask run --port=5000
La app se ejecuta en el browser.
Basico, hasta acá nada nuevo.
Tengo que instalar esta app en otra maquina. Pensamiento 1 instalar python y todas las librerias y dependecias y... no.
Acá entra Copilot de nuevo al rescate. Le promptee consejos para instalar estos scripts python como ejecutables para windows.
Me recomendo algunas cosas interesantes.
Antes que nada, tener el entorno virtual levantado, las dependencias instaladas, asegurarse de que todo funciona correctamente en local y...
Primero usar pyinstaller para generar archivos .exe de mis apps.
pip install pyinstaller
En cada directorio ejecuto:
/mi-proyecto/backend
/mi-proyecto/frontend
pyinstaller --onefile --name backend app.py
Acá me fue necesario especificar pasar los templates como parametro, porque daba un error de jynga2
pyinstaller --onefile --name frontend --add-data
"templates;templates" app.py
Paso siguente, instalar Inno Setup para generar instaladores.
Bueno tuve que promtear algo tambien para tener una base, porque no tenia idea como escribir el script ni la sintaxis de Inno setup.
[Setup]
AppName=My Awesome APP
AppVersion=1.0
DefaultDirName={pf}\MyAwesomeAPP
DefaultGroupName=My Awesome APP
OutputBaseFilename=MyAwesomeAPP
Compression=lzma
SolidCompression=yes
[Files]
; Incluir todos los archivos del proyecto
Source: "C:\Users\url-a-tu-proyecto\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs
; Incluir los ejecutables generados por pyinstaller
Source: "C:\Users\url-a-tu-proyecto\frontend\dist\frontend.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\url-a-tu-proyecto\backend\dist\backend.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\My Awesome APP"; Filename: "{app}\frontend.exe"
Name: "{group}\My Awesome APP"; Filename: "{app}\backend.exe"
[Run]
; Ejecutar el backend
Filename: "{app}\backend.exe"; Flags: nowait
; Ejecutar el frontend
Filename: "{app}\frontend.exe"; Flags: nowait
Esta fue mi estructura base.
Compile, espere unos minutos... y me genero el output.
Y aqui esta el primer instalador :D
A la primera claramente no anduvo... pero 16 pruebas mas tarde, la app quedo corriendo. Los scripts ejecutandose...
Y desde mi browser pude acceder a mi app.
Lo interesante de esta cuestion, las herramientas! Obviamente. Lo que me gusta, me resulto rapido y facil el uso de inno setup, aprendí a lidir con algunas cuestiones de configuracion de pyinstaller, como las flags para los templates... bien raro el error :P
Y el uso de nuevas tecnologias y python siempre es agradable...
La proxima quiza alguna app de escritorio con estos scripts, para optimizar un poco el tamaño final, la arquitectura de archivos y claramente que no esten los terminales ejecutandose en vivo y en directo, con mensajes de entornos de desarrollo y teniendo que entrar a un localhost desde el browser! :panic
Posted on October 25, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.