build_portable.py
1. Scopo e Contesto d’Uso
Lo script build_portable.py è il motore di build ufficiale per la distribuzione di FIRE. Il suo scopo è trasformare l’ambiente di sviluppo Python (che richiede installazione e configurazione complesse) in un artefatto “Zero-Configuration”: una cartella o un file .exe che può essere eseguito su qualsiasi macchina Windows senza pre-requisiti.
È progettato specificamente per gestire le complessità delle librerie di Intelligenza Artificiale (torch, prophet, timesfm), che spesso causano fallimenti con i tool di build standard a causa di file di dati nascosti o dipendenze binarie non standard.
2. Funzionalità Principali
Lo script agisce come un wrapper intelligente attorno a PyInstaller, configurando automaticamente tutti i parametri necessari per una build di successo:
- Gestione Hidden Imports: Include automaticamente moduli che vengono caricati dinamicamente a runtime (es.
sklearn.utils,scipy.special) e che PyInstaller non rileverebbe da solo. - Inclusione Risorse: Copia automaticamente le cartelle
resources/(icone, template) eprompts/all’interno del pacchetto distribuito. - Fix per Librerie AI (
--collect-all): Applica la strategia di raccolta totale per pacchetti problematici comeprophet,timesfm,chronosecmdstanpy. Questo risolve errori comuni comeFileNotFoundError: __version__.pycopiando l’intero pacchetto sorgente nel dist. - Pulizia Automatica: Esegue una pulizia della cache di build (
--clean) ad ogni lancio per evitare artefatti corrotti.
3. Workflow Operativo
Lo script si esegue direttamente dalla root del progetto:
python build_portable.pyModalità di Build (Console vs Windowed)
Lo script è configurato di default in modalità Console (--console) per facilitare il debugging:
- Fase di Test: La finestra nera (console) appare all’avvio dell’exe. Se l’app crasha, l’errore (Traceback) rimane visibile.
- Fase di Rilascio: Per la versione finale, si deve modificare lo script commentando
--consolee scommentando--windowed.
Output
Il risultato della build si trova nella cartella dist/FIRE_Portable/. L’intera cartella deve essere distribuita.
4. Quando Usarlo
- Rilascio di Versione: Ogni volta che si vuole creare una versione stabile da consegnare agli utenti.
- Test su Macchina Pulita: Per verificare che l’applicazione funzioni su un computer che non ha Python o CUDA installati.
- Backup Eseguibile: Per creare una copia “congelata” e funzionante dell’applicazione in un determinato stato.
5. Riferimenti
- Per la panoramica del processo di build e deploy, vedere QC DD-BUILD-PROCESS.
- Per i dettagli sulle dipendenze AI incluse, vedere FIRE DD DEPENDENCY MANAGEMENT.