open sourceProgrammare col martelloPython

Creare eseguibili Windows in Python con pyinstaller

python programming programmazione da zero python

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

Comments (4)

  1. scusami nella tua descrizione dovresti cominciare dall’inizio ..mi spiego : dove e cosa aprire all’inizio dove eseguire il pip install…. in ambiente linux o windows
    poi come far eseguire il file etcc…..

    • Ciao,
      Ok, grazie per il consiglio:
      Il tutto va fatto da una console di comando, quindi da windows 10 ad esempio:
      1) Tasto destro su simbolo Start e poi clieccare su Esegui (se non compare o si utilizza un’altra versione di windows cercare su Google: aprire una console di comando da windows)
      2) qui digitare CMD e premere Invio
      Fondamentalmente, se è installato Python sul sistema, il comando PIP può essere lanciato direttamente da qualsiasi percorso se no bisogna andare nella directory degli script di python, es.: C:\Python37\scripts
      Per Linux bisogna invece aprire un Terminal e fondamentalmente la procedura è identica.

  2. Buongiorno, se provo a seguire la procedura mi da questo errore, qualcuno sa il perchè?

    (v_env_uno) C:\Users\Riccardo\Desktop\Pithon\Progetti\Progetto_uno\v_env_uno\Scripts>pyinstaller –onefile Calcolatrice_python.py
    Traceback (most recent call last):
    File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\runpy.py”, line 193, in _run_module_as_main
    “__main__”, mod_spec)
    File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\runpy.py”, line 85, in _run_code
    exec(code, run_globals)
    File “C:\Users\Riccardo\Desktop\Pithon\Progetti\Progetto_uno\v_env_uno\Scripts\pyinstaller.exe\__main__.py”, line 4, in
    File “c:\users\riccardo\desktop\pithon\progetti\progetto_uno\v_env_uno\lib\site-packages\PyInstaller\__init__.py”, line 17, in
    from PyInstaller import compat
    File “c:\users\riccardo\desktop\pithon\progetti\progetto_uno\v_env_uno\lib\site-packages\PyInstaller\compat.py”, line 184, in
    is_ms_app_store = is_win and os.path.getsize(python_executable) == 0
    File “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\genericpath.py”, line 50, in getsize
    return os.stat(filename).st_size
    OSError: [WinError 1920] Impossibile accedere al file: ‘C:\\Users\\Riccardo\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe’

    • Non capisco esattamente però sembra un impostazione errata dell’ambiente virtuale.Proverei a partire da un’installazione pulita di Python senza virtual environment (quella classica in C:\python37 per intenderci).

Comment here