Parte V — Fare cose vere
Capitolo 20 — Distribuire i programmi
Hai scritto un programma utile. Ora vuoi darlo a qualcuno che non ha Leo installato — un collega, un amico, un'intera classe. Non puoi pretendere che chi lo riceve sappia aprire un terminale, installare Python e lanciare python3 -m leo. La distribuzione risolve proprio questo: impacchetta il programma in qualcosa che si avvia con un doppio clic. Su Windows è un eseguibile .exe; su Android, l'APK del capitolo scorso.
🦁 Curiosità — «Funziona sulla mia macchina»
È diventata proverbiale, tra i programmatori, la frase pronunciata davanti a un programma che gira benissimo sul computer di chi l'ha scritto e da nessun'altra parte: «funziona sulla mia macchina». Di solito la si dice con un sorriso rassegnato, perché il problema è proprio quello. Distribuire bene un programma serve esattamente a questo: far sì che funzioni anche sulle macchine di tutti gli altri.
Un eseguibile Windows con leo compila
Il comando leo compila trasforma un programma .leo, o un intero progetto con finestre, in un eseguibile Windows autonomo. Chi lo riceve non deve installare niente — né Python, né Leo, né la libreria grafica:
leo compila saluto.leo
leo compila RubricaIl primo compila un singolo programma, il secondo un intero progetto (quello disegnato con Leo Studio). Alla fine Leo ti dice dove si trova l'eseguibile e ti consegna un rapporto dettagliato su cosa ha incluso e cosa ha lasciato fuori.
Una cosa che colpisce, e che è molto nello spirito di Leo: l'eseguibile contiene solo ciò che il programma usa davvero. Se il tuo programma non apre finestre, l'eseguibile non si porta dietro la libreria grafica; se non usa i database, non include il motore dei database. Il risultato è più piccolo e più pulito di quanto ci si aspetterebbe, e il rapporto ti mostra nero su bianco cosa è stato escluso.
Le opzioni che contano
La compilazione si può rifinire con qualche opzione, utile quando consegni un programma «vero» a qualcuno:
leo compila Rubrica --nome "Rubrica 2026" --icona rubrica.ico
leo compila Rubrica --autore "Anna Rossi" --descrizione "Rubrica della classe" --versione-programma 1.2
leo compila Rubrica --un-file--nome e --icona danno all'eseguibile un nome e un'icona riconoscibili; --autore, --descrizione e --versione-programma riempiono le proprietà del file che Windows mostra. L'opzione --un-file produce un unico .exe invece di una cartella: è più comodo da spedire (un file solo), ma parte un po' più lento, perché deve scompattarsi a ogni avvio. Senza --un-file, ottieni una cartella con l'eseguibile e le sue librerie, che parte subito ma va distribuita per intero.
Dietro le quinte, leo compila si appoggia a uno strumento chiamato PyInstaller, che va installato una volta sola nell'ambiente di Leo; se manca, Leo te lo dice e ti mostra il comando esatto per installarlo (o lo fa per te con --installa).
Firmare il programma
Quando distribuisci un eseguibile su Windows, il sistema operativo e gli antivirus guardano con sospetto i programmi senza firma digitale. Se possiedi un certificato, puoi firmare l'eseguibile direttamente dalla compilazione:
leo compila Rubrica --firma certificato.pfxLa firma non è obbligatoria per i programmi che giri tu o che passi a persone di fiducia, ma diventa importante se vuoi distribuire più ampiamente: dice a chi riceve che il programma viene davvero da te e non è stato manomesso per strada.
L'APK per Android
Sul fronte Android, la storia è quella del capitolo scorso: un progetto a finestre diventa un file .apk da installare sul telefono. La costruzione si fa sul computer, e il risultato è un singolo file che gira su tutti i telefoni dalla versione 7.0 in su. Puoi passarlo come qualunque altro file — via messaggio, via e-mail, su una chiavetta — e chi lo riceve lo installa consentendo l'installazione «da origini sconosciute». I passi precisi sono nelle schede TELEFONO.md, android/LEGGIMI.md e ANDROID_PLAY.md (quest'ultima per chi punta al Play Store).
Pensare a chi riceve
La distribuzione è il momento in cui il tuo programma smette di essere tuo e diventa di chi lo usa. Vale la pena curarlo: un nome chiaro, un'icona, una versione, e — se il programma legge o scrive file — istruzioni semplici su dove mette le sue cose. Un buon programma mal consegnato frustra; un programma onesto ben impacchettato si fa ricordare. Le schede DISTRIBUZIONE.md e COMPILAZIONE.md raccolgono tutti i dettagli, dalle impronte SHA-256 alle installazioni silenziose.
💡 L'idea — Il prodotto sullo scaffale
Distribuire un programma è come confezionare un prodotto per lo scaffale di un negozio: non basta che funzioni in laboratorio. Deve arrivare chiuso, completo e pronto all'uso tra le mani di chi lo installa, senza che debba procurarsi i pezzi mancanti. Un'etichetta chiara, una confezione ordinata e il nome ben visibile fanno la differenza tra un prodotto che si prende con fiducia e uno che si lascia sullo scaffale.
Prova tu
Gli esercizi di compilazione richiedono Windows con l'ambiente di Leo e PyInstaller.
- Prendi un programma testuale che hai scritto nei primi capitoli e compilalo in un
.execon un nome e una descrizione tua. Provalo con un doppio clic. - Compila lo stesso programma due volte, una con
--un-filee una senza, e confronta le dimensioni e la velocità di avvio. - Progetta — anche solo sulla carta — come consegneresti la tua app a una classe di trenta studenti: file unico o cartella? Con quali istruzioni? Con quale icona?
Qui si chiude la Parte V, e con essa il percorso principale del libro. Hai cominciato con un scrivi "Ciao" e sei arrivato a programmi con finestre, app per il telefono, strumenti di sicurezza e pacchetti da distribuire. Le appendici che seguono sono il tuo scaffale di riferimento: tienile a portata di mano.