Vai al contenuto
Leo

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:

Risultato
leo compila saluto.leo
leo compila Rubrica

Il 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:

Risultato
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:

Risultato
leo compila Rubrica --firma certificato.pfx

La 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.

  1. Prendi un programma testuale che hai scritto nei primi capitoli e compilalo in un .exe con un nome e una descrizione tua. Provalo con un doppio clic.
  2. Compila lo stesso programma due volte, una con --un-file e una senza, e confronta le dimensioni e la velocità di avvio.
  3. 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.