Vai al contenuto principale

Tre metodi per convertire uno script Python in un file Exe

Scopri cos'è un file eseguibile e come convertire uno script Python in un file .exe usando PyInstaller, Nuitka e auto-py-to-exe.
Aggiornato 3 giu 2026  · 7 min leggi

In questo articolo, ti guiderò attraverso alcuni scenari che giustificano la conversione di un file Python in un eseguibile. Ti mostrerò anche come convertire un file Python in un file eseguibile usando tre librerie Python: Pyinstaller, Nuitka e auto-py-to-exe.

Clona questo repository Github per seguire il tutorial.

Perché convertire Python in .exe?

I file eseguibili - file salvati con l'estensione .exe - vengono usati per installare o eseguire applicazioni software sui computer con sistema operativo Windows. Il file che consente a un computer Windows di eseguire un'applicazione è il file .exe.

Ci sono diversi motivi per cui potresti voler convertire un programma Python in un file eseguibile. Eccone alcuni:

Attività dannose

Purtroppo, alcune persone su internet diffondono software dannoso per infettare i dispositivi altrui e rubarne le informazioni. Un modo per contrastarle è non cadere nelle loro truffe: significa non scaricare o aprire alla cieca file .exe che non provengono da una fonte affidabile.

Accessibilità

Un altro motivo per convertire un file Python in un eseguibile è condividere un'applicazione con altri utenti. Il tipico programma Python può includere diverse dipendenze che un altro utente dovrebbe installare prima di poterlo eseguire. E se la persona non sa programmare? In questi casi, aspettarsi che un utente impari a programmare prima di usare un'app può essere irragionevole. Convertire un file Python in un eseguibile permette agli utenti di accedere al tuo programma senza conoscere Python.

Tutela del codice sorgente

Ma anche se sanno programmare, convertire un file Python in un eseguibile può essere una buona opzione per evitare che il codice venga rubato. Un file eseguibile aiuta a prevenire il furto del codice perché crea una versione compilata del sorgente, più difficile da comprendere rispetto al codice originale.

Pianificazione di job

Potresti anche voler pianificare un job sul tuo computer per eseguire un file .exe a un'ora specifica.

Come convertire uno script Python in un file .exe 

Ora che sai cosa sono i file .exe e perché potresti voler convertire un file Python in un file .exe, vediamo come farlo in Python. In questa sezione, tratteremo tre framework: pyinstaller, nuitka e auto-py-to-exe.

Una cosa da tenere a mente è che auto-py-to-exe presenta problemi di compatibilità noti con Python 3.11 e versioni successive, ed è generalmente affidabile solo fino a Python 3.10 a meno che tu non usi versioni specifiche più recenti e dipendenze attentamente allineate.

Detto questo, iniziamo.

Preparare lo script

Questa dimostrazione utilizzerà il dataset New York City Airbnb open data

Prima che i data scientist possano analizzare un dataset, i dati devono essere formattati per essere compatibili con gli strumenti utilizzati. La creazione di uno schema di validazione definisce in modo dichiarativo tutte le verifiche che si applicano a ciascun campo. Questo processo può essere piuttosto ripetitivo. Per evitare che i nostri data scientist svolgano attività ripetitive, abbiamo creato uno script di validazione automatizzato da eseguire periodicamente. 

Nota: fai estrema attenzione quando usi percorsi relativi se il tuo script deve leggere dati. È meglio usare percorsi assoluti per assicurarti che l'eseguibile funzioni come previsto. 

import pandas as pd
from pandas.api.types import CategoricalDtype

def perform_validation(filename:str):
    """
    A function to validate inputs for NYC Airbnb Open data.
    """
    path_to_data = "../.."
    data = pd.read_csv(f"{path_to_data}{filename}")



    # Convert neighbourhood_group to type category
    neighbourhood_group_to_cat = CategoricalDtype(
        categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"],
        ordered=False
        )
 
    data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat)

    # Convert room_type to type category
    room_type_to_cat = CategoricalDtype(
        categories=["Entire home/apt", "Private room", "Shared room"],
        ordered=False
    )

    data["room_type"] = data["room_type"].astype(room_type_to_cat)

    # Convert last_review to datetime
    data["last_review"] = pd.to_datetime(data["last_review"])

    # Minimum nights a person can stay is one night
    assert data["minimum_nights"].min() >= 1

    # Minimum number of reviews is 0
    assert data["number_of_reviews"].min() >= 0
 
    # Minimum number of reviews per month
    assert data["reviews_per_month"].min() >= 0.00

    # Minimum amount of listings per host
    assert data["calculated_host_listings_count"].min() >= 1

    # Number of days when listing is available for books
    # Could be 0 if tennant has long term booking
    assert data["availability_365"].min() >= 0

    # Save validated data
    data.to_csv("validated_ab_nyc_2019.csv", index=False)

if __name__ == "__main__":
    # User inputs filename
    filename = input("Enter filename: ")
 
    # Ensure it's a string
    if not filename.isalpha():
        filename = str(filename)
 
    # Automated validation
    perform_validation(filename)

Nota: abbiamo copiato e incollato questo script nelle directory pyinstaller, nuitka e auto-py-to-exe

# Directory structure
|   AB_NYC_2019.csv
|  
+---auto_py_to_exe
|   |   requirements.txt
|   |   validation.py         
+---pyinstaller
    |   requirements.txt
    |   validation.py

Ogni directory ha il proprio ambiente virtuale in cui abbiamo installato i requisiti: vedi i requisiti di pyinstaller o i requisiti di auto-py-to-exe. Se stai seguendo con il codice, assicurati di creare un ambiente virtuale nella directory pyinstaller e nella directory auto-py-to-exe. 

In sintesi, lo script sopra contiene una funzione – scopri di più su come scrivere funzioni in Python – che legge un dataset e poi definisce il formato atteso di specifici campi nei dati. Il passaggio successivo è convertire questo script Python in un file eseguibile che possa essere eseguito periodicamente per generare un dataset formattato. 

Metodo 1: Pyinstaller

Pyinstaller ti permette di convertire rapidamente un file Python in un file eseguibile dal terminale. Dopo aver creato l'ambiente virtuale e installato i requisiti per il tuo script (incluso pyinstaller), apri il terminale e vai nella directory in cui si trova il file Python che vuoi convertire. 

Il passo successivo è eseguire il seguente comando: 

pyinstaller --onefile validation.py

Inizialmente vedrai vari log, l'ultimo dei quali dirà qualcosa come “completed successfully” – se il file eseguibile è stato creato correttamente. 

executable file being created

Figura 1: Log che mostrano la creazione del file eseguibile e il completamento con successo.

Al termine dell'esecuzione verranno create due nuove directory, build e dist, nella stessa posizione del file Python. Nella directory dist troverai lo script validation.exe.

validation.exe on a dataset

Figura 2: Una GIF che mostra l'esecuzione di validation.exe su un dataset.

Per eseguire lo script, fai semplicemente doppio clic su di esso. Si aprirà una console che ti chiederà di inserire il nome del file dei dati su cui vuoi eseguire la validazione. Una volta inserito il nome del file, la console si chiuderà e i dati validati verranno creati nella stessa directory del file validation.exe – vedi Figura 2. 

Metodo 2: Nuitka

Nuitka è un altro approccio da considerare. A differenza di PyInstaller, che impacchetta il tuo script Python con l'interprete, Nuitka compila effettivamente il tuo codice Python in codice C. Questo offre una migliore protezione del sorgente, potenzialmente un'esecuzione più veloce e spesso dimensioni dei file più ridotte. Il compromesso è un tempo di compilazione più lungo e una configurazione più complessa.

Installazione e configurazione

Dopo aver creato un ambiente virtuale e installato Nuitka con pip install nuitka, devi assicurarti che sia disponibile un compilatore C sul tuo sistema. Il compilatore necessario dipende dal tuo sistema operativo:

  • Windows: Scarica e installa Microsoft Visual C++ Build Tools (gratuito) dal sito di Visual Studio, oppure usa MinGW

  • macOS: Installa gli Xcode Command Line Tools con xcode-select --install

  • Linux: GCC di solito è preinstallato; in caso contrario, installalo tramite il tuo gestore pacchetti

Una volta installato, Nuitka rileverà automaticamente il compilatore. Se riscontri problemi, assicurati che il compilatore sia nel PATH di sistema.

Conversione dello script di validazione con Nuitka

Convertiamo lo stesso script di validazione NYC Airbnb usando Nuitka, proprio come abbiamo fatto con PyInstaller e auto-py-to-exe. Per compilare lo script in un eseguibile, esegui:

python -m nuitka --onefile --follow-imports --include-package=pandas validation.py

Vediamo il significato di ciascun flag:

  • --onefile: Crea un singolo file eseguibile (invece di una directory con più file e dipendenze)

  • --follow-imports: Include automaticamente tutti i moduli importati dal tuo script

  • --include-package=pandas: Include esplicitamente il pacchetto pandas (alcuni pacchetti non vengono rilevati automaticamente, quindi questo assicura che sia incluso)

A differenza di PyInstaller, che impiega circa 30 secondi, Nuitka richiederà molto più tempo—tipicamente 5–15 minuti a seconda della complessità del codice e della velocità del sistema. Vedrai l'output di compilazione nel terminale che mostra l'avanzamento nella fase di compilazione C.

Al termine, vedrai un messaggio di successo che indica la creazione dell'eseguibile. L'eseguibile compilato viene creato nella stessa directory del file validation.py.

Fai doppio clic su validation.exe o eseguilo da riga di comando. Si aprirà una finestra della console che ti chiederà di inserire un nome file, proprio come con PyInstaller. Dopo aver digitato AB_NYC_2019.csve premuto invio, la validazione viene eseguita, la console si chiude e viene creato un nuovo file validated_ab_nyc_2019.csv nella stessa directory, esattamente come con la versione PyInstaller.

Metodo 3: auto-py-to-exe

Il primo passo per creare un file eseguibile usando auto-py-to-exe è avviarlo con il seguente comando: 

auto-py-to-exe 

Questo dovrebbe restituire un'interfaccia grafica (GUI) che ci aiuterà a convertire il file Python in un file eseguibile. 

graphical user interface

Figura 3: L'interfaccia grafica restituita dopo l'esecuzione del comando auto-py-to-exe. 

Nota: se non funziona, assicurati di aver creato un ambiente virtuale nella directory auto-py-to-exe e di aver installato il requirements.txt nel tuo ambiente virtuale con il seguente comando: pip install -r requirements.txt.

La GUI ha diversi campi da compilare. Vediamoli uno per uno: 

  • Specific Location: in questo campo devi aggiungere il percorso dello script del file Python che vuoi convertire in un eseguibile.  
  • Onefile: qui selezioni se vuoi creare una singola directory o un singolo file. Una directory conterrà tutte le dipendenze necessarie per eseguire lo script e un file eseguibile, mentre selezionando “One File” verrà creato un unico file eseguibile. 
  • Console Window: la scelta tra “Console Based” o “Window Based” dipende da ciò che restituisce il tuo script. Ad esempio, lo script che abbiamo creato sopra richiede all'utente di inserire un nome file. Quindi è consigliata la soluzione “Console Based”, poiché aprirà la console dopo l'esecuzione del file eseguibile. Se non fosse necessario mostrare gli output della console dopo l'esecuzione, allora “Window Based” è una buona opzione. 

Sono disponibili anche altre opzioni per configurare la creazione del file eseguibile (ad esempio, aggiungere icone, file aggiuntivi e altro). In questa sezione possiamo anche modificare il percorso in cui vogliamo esportare i file generati dal nostro eseguibile: per farlo, seleziona l'opzione “Settings” e scegli la directory di output che preferisci. L'ultimo passaggio è selezionare “Convert .py to .exe” per convertire il file Python. 

Guarda la GIF in Figura 4 per vedere come abbiamo configurato il file eseguibile. 

Auto py to exe

Figura 4: Una GIF che mostra la configurazione per auto-py-to-exe

Tornando alla directory auto-py-to-exe, troverai una directory chiamata output: è qui che si trova il nostro file validation.exe. Seleziona il file per eseguirlo: si aprirà una console che ti chiede di inserire un nome file:

executable validation file

Figura 5: Console restituita dall'esecuzione del file di validazione eseguibile. 

Inserisci semplicemente il nome del file – in questo esempio, AB_NYC_2019.csv – e premi invio. La console si chiuderà e verrà creato un nuovo file nella directory di output (dove si trova l'eseguibile) chiamato validated_ab_nyc_2019.csv.

PyInstaller vs Nuitka

Questo è il confronto tra Nuitka e PyInstaller sullo stesso script di validazione, con auto-py-to-exe come alternativa GUI:

Metrica

PyInstaller

auto-py-to-exe

Nuitka

Dimensione eseguibile

nella media

nella media

20-30% più piccolo

Tempo di build

nella media

nella media

16x più lungo

Tempo di avvio

~2 secondi

~2 secondi

~1 secondo

Tempo di esecuzione (task di validazione)

~3 secondi

~3 secondi

~2,5 secondi

Protezione del codice sorgente

Moderata

Moderata

Eccellente

Python 3.8–3.10

✅ Eccellente

✅ Eccellente

✅ Eccellente

Python 3.11+

✅ Eccellente

⚠️ Problemi noti

✅ Eccellente

PyInstaller e Nuitka offrono entrambi un supporto affidabile su tutte le versioni moderne di Python, mentre auto-py-to-exe presenta problemi di compatibilità noti con Python 3.11 e successivi. Nuitka produce eseguibili più piccoli e veloci, con una protezione della proprietà intellettuale superiore—ma il processo di build è circa 16 volte più lento rispetto a PyInstaller.

Conclusione

In questo articolo hai imparato: 

  • Cos'è un file Python
  • Cos'è un file eseguibile e perché può essere utile 
  • Come convertire uno script Python in un eseguibile usando pyinstaller, un ottimo strumento per chi è più a suo agio con la riga di comando. 
  • Come convertire uno script Python in un eseguibile usando auto-py-to-exe, che offre un'interfaccia grafica (GUI) per configurare come creare il file eseguibile. 

Scopri di più su come sfruttare Python per fare data science nel percorso di carriera Associate Data Scientist with Python di DataCamp.

FAQ

Posso includere file aggiuntivi (ad es. immagini, file di configurazione) nell'eseguibile?

Sì, tutti e tre gli strumenti ti permettono di includere file aggiuntivi richiesti dallo script. Per PyInstaller e Nuitka, puoi usare l'opzione --add-data per specificare i file da includere. In auto-py-to-exe, nella GUI c'è un'opzione per aggiungere file sotto "Additional Files". Assicurati di specificare correttamente i percorsi relativi o assoluti in modo che l'eseguibile possa accedere a questi file.

Come posso aggiungere un'icona personalizzata al file eseguibile?

Puoi aggiungere un'icona personalizzata al tuo eseguibile specificando un file .ico. Per PyInstaller, usa il flag --icon seguito dal percorso al tuo file .ico. In auto-py-to-exe, puoi impostare il percorso dell'icona nel campo "Icon" all'interno della GUI. Nuitka supporta anche il flag --windows-icon-from-ico. Nota che il file dell'icona deve essere in formato .ico.

Perché il mio file eseguibile è così grande e come posso ridurne la dimensione?

I file eseguibili possono includere tutte le dipendenze, le librerie e l'interprete Python, il che può renderli grandi. Per ridurne la dimensione:

  • Usa l'opzione --onefile in PyInstaller o Nuitka per impacchettare tutto in un singolo file.
  • Escludi le librerie non necessarie usando l'opzione --exclude-module in PyInstaller o Nuitka.
  • Prendi in considerazione strumenti come UPX per comprimere l'eseguibile risultante (funziona con PyInstaller e auto-py-to-exe).
  • Valuta l'uso di Nuitka, che in genere produce eseguibili più piccoli del 20–30% rispetto a PyInstaller.

Posso creare un eseguibile per un sistema operativo diverso?

PyInstaller, auto-py-to-exe e Nuitka sono tutti specifici per piattaforma. Per creare un eseguibile per un altro sistema operativo, devi usare strumenti di cross-compilazione o configurare una macchina virtuale o un container per l'OS di destinazione. Ad esempio, per creare un eseguibile Windows su Linux, puoi usare Wine o Docker con un ambiente Windows.

Quali sono le alternative a pyinstaller e auto-py-to-exe?

Altri strumenti per creare eseguibili includono:

  • cx_Freeze: Uno strumento multipiattaforma per creare eseguibili.
  • py2exe: Uno strumento specifico per Windows per creare eseguibili da script Python.

Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Argomenti

Corsi per Python

Corso

Python - Livello Intermedio

4 h
1.4M
Migliora le tue competenze nella scienza dei dati creando visualizzazioni con Matplotlib e manipolando DataFrames con pandas.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra altroMostra altro