Creare eseguibili Windows in Python con pyinstaller

PyInstaller

pyinstaller permette di creare degli eseguibili per windows con estensione .exe direttamente dai file .py

E’ sufficiente installarlo da console di windows (tasato destro su menù start-> Esegui -> cmd+Invio) con:

 pip install pyinstaller

ed eseguire nella directory del nostro file .py:

pyinstaller --onefile nomedelloscript.py

Le librerie dipendenti più comuni (come tkinter per intenderci) sono generalmente incluse automaticamente, alcune esterne invece vanno specificate esplicitamente.

Ad esempio:

pyinstaller --onefile fe_import.py --hiddenimport xmltodict

Di default lo script crea due sottodirectory build e dist, contenenti l’exe e i file di informazione necessari alla compilazione.

Inoltre lo script apre una console/terminale windows al lancio del programma.

Nel caso volessimo evitarlo (ad esempio per applicazioni pensate per interfaccia esclusivamente grafica), possiamo usare l’opzione –noconsole:

pyinstaller --onefile fe_import.py --hiddenimport xmltodict  --noconsole

Librerie aggiuntive

Nel mio caso ho installato una libreria esterna di Python che non veniva riconosciuta in alcun modo dal compliatore a causa di un problema di path di default di python.

Ho risolto disinstallando la libreria con pip uninstall nomelibreria, cambiando il path nelle variabili di sistema di windows e reinstallando la libreria.

Creare una procedura di installazione

Da mettere anche in conto il fatto che pyinstaller crea solo l’exe, quindi se è necessario includere le librerie di c++ per windows, bisogna fornirle separatamente od utilizzare un software di creazione installer come ad esempio questi (free/open source):

NSIS

INNO SETUP