Eccone alcuni comuni. Se non diversamente specificato, tutti i progetti elencati di seguito vengono mantenuti attivamente a partire dalla mia ultima modifica (gennaio 2020).
Ho anche incluso collegamenti ai rispettivi siti Web, repository e elenchi PyPi nel caso in cui desideri verificare tu stesso la frequenza con cui sono stati aggiornati.
Inoltre, se non diversamente specificato, tutti i programmi elencati di seguito produrranno un exe specifico per il sistema operativo in cui è in esecuzione. Quindi, ad esempio, l'esecuzione di Pyinstaller in Windows produrrà un exe di Windows, ma l'esecuzione di Pyinstaller in Linux produrrà un exe di Linux. Se vuoi produrre un exe per più sistemi operativi, dovrai cercare di utilizzare macchine virtuali o cercare di utilizzare qualcosa come Wine .
I seguenti programmi funzionano tutti in modo simile: raggruppano Python e il tuo programma, combinandoli efficacemente per produrre un eseguibile.
PyInstaller:
- Link : sito web ||Repo || PyPi
- Supporta : Python 2.7 e Python 3.4 - 3.7 su Windows, Mac e Linux.
cx_Freeze:
- Link: sito web ||Repo || PyPi
- Supporta: Python 2.7 e 3.5 - 3.8 su Windows, Mac e Linux.
py2app:
- Link: sito web || Repo || PyPi
- Supporta: Python 2.7 e 3.3 (?) - 3.7 (?) Solo su Mac.
- Nota: a partire dalla mia ultima modifica, non sono stato in grado di determinare in modo definitivo la gamma esatta di versioni di Python supportate da pyapp. L'ultima versione menziona il supporto di Python 3.7.
Nota: le versioni precedenti di questo post includevano commenti per py2exe ( repo ) e bbfreeze ( repo ). Entrambi i progetti sono stati rimossi da questo elenco: hanno assistito a poca o nessuna attività per diversi anni e sembrano essere completamente non mantenuti. Vedere la cronologia delle modifiche per i vecchi commenti.
Ovviamente non è l'unico modo per fare le cose:
pynsist:
- Link: sito web || Repo || PyPi
- Supporta: tutte le versioni di Python? Nota: creerà solo programmi di installazione di Windows .
Altre note:
Pynsist sembra supportare il raggruppamento di qualsiasi versione arbitraria di Python con la tua applicazione. Tuttavia, lo strumento stesso richiede Python 3.5+ per essere eseguito.
Pynsist creerà un programma di installazione di Windows per il tuo programma che installerà direttamente Python sul computer dell'utente invece di raggrupparlo con il tuo codice e creerà scorciatoie che collegano al tuo script Python. Sebbene questo programma produca solo programmi di installazione di Windows, sembra che puoi ancora eseguire Pynsist su computer Mac e Linux.
Nuitka:
- Link: sito web || Repo (specchio Github) ||PyPi
- Supporta: Python 2.6 - 2.7 e Python 3.3 - 3.7 su Windows, Mac e Linux.
- Altre note: Nuitka compilerà letteralmente il tuo codice Python e produrrà un exe (al contrario degli altri progetti, che includono semplicemente Python) per provare ad accelerare il tuo codice. Come effetto collaterale, otterrai anche un pratico file exe che puoi distribuire. Nota che devi avere un compilatore C ++ disponibile sul tuo sistema.
cython:
- Link: sito web || Repo ||PyPi
- Supporta: Python 2.6 - 2.7 e Python 3.2 - 3.8 su Windows, Mac e Linux.
- Altre note: Cython è simile a Nuitka in quanto è un compilatore Python. Tuttavia, invece di compilare direttamente il tuo codice, lo compilerà in C. Puoi quindi prendere quel codice C e trasformare il tuo codice in un exe . Avrai bisogno di un compilatore C disponibile sul tuo sistema.
La mia preferenza personale è quella di utilizzare PyInstaller poiché è stato il più facile per me da installare e funzionare, è stato progettato per funzionare bene con varie librerie popolari come numpy o pygame e ha una grande compatibilità con vari sistemi operativi e versioni di Python.
Tuttavia, ho anche creato con successo vari ex utilizzando cx_Freeze senza troppe difficoltà, quindi dovresti anche considerare di provare quel programma.
Non ho ancora avuto la possibilità di provare ampiamente Pynist, Nuitka o Cython, ma sembrano soluzioni piuttosto interessanti e innovative. In caso di problemi nell'utilizzo del primo gruppo di programmi, potrebbe essere utile provare uno di questi tre. Poiché funzionano in modo fondamentalmente diverso rispetto ai programmi in stile Pyinstaller / cx_freeze, potrebbero avere successo in quei casi estremi in cui il primo gruppo fallisce.
In particolare, penso che pynist sia un buon modo per eludere l'intera questione della distribuzione del codice del tutto: Mac e Linux hanno già il supporto nativo per Python e la semplice installazione di Python su Windows potrebbe davvero essere la soluzione più pulita. (Lo svantaggio è ora che devi preoccuparti di prendere di mira più versioni di Python + installazione di librerie).
Nuitka e Cython (nella mia limitata esperienza) sembrano funzionare abbastanza bene. Di nuovo, non li ho testati a fondo personalmente, quindi la mia osservazione principale è che sembrano richiedere molto più tempo per produrre un exe rispetto ai programmi in stile "freeze".
Detto questo, convertire il tuo programma Python in un eseguibile non è necessariamente l'unico modo per distribuire il tuo codice. Per ulteriori informazioni sulle altre opzioni disponibili, vedere i seguenti collegamenti: