Cx_Freeze è un modulo di python che permettere di "congelare" il sorgente in un eseguibile (windows, linux o mac dipende dove lo installate). questo è estremamente comodo perchè permette di distribuire software senza dover far installare python (anche se effettivamente questo ha senso su windows o mac, visto che linux ha sempre python dentro). Per creare eseguibili si può scegliere due vie:
- script shell/cmd
- file setup.py
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-Scriptshell/cmd+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
portiamoci nella cartella dove abbiamo installato python e nela sottodirectory Script (ad esempio su windows )
- Codice:
-
C:\> cd .\Python31\Script
. ora lanciamo il script cxfreeze che troviamo e mettiamo come parametro il file che dobbiamo congelare (abbiamo a disposizione alcune opzioni, basta guardare la documentazione):
- Codice:
-
C:\> cxfreeze C:\Source\prova.py
. questo genera in documenti una cartella "dist" in cui troveremo l'eseguibile prova.exe, la dll Python31.dll (questo è l'interprete python sotto forma di dll), le dll dei moduli importati.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+file setup.py+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
la soluzione con script è più semplice e immediata, ma va bene per cosette elementari. per cose complesse bisogna usare uno script appositamente creato di questo tipo:
- Codice:
-
from Cx_Freeze import setup, Executable
setup(
name = "prova",
version = "0.1",
description = "un stupidissmio programma di esempio",
executables = [Executable("prova.py")]
)
finito dovremo lanciare da terminale (presupponendo abbiate già impostato le variabili d'ambiente):
- Codice:
-
C:\> python setup.py build
questo crea una directory di nome build dove all'interno troverete le stesse cose di prime, più un archivio con dentro i file .pyc di tutto ciò che avete usato per creare il vostro software.
Un'ultima cosa: se volete creare interfaccie grafiche dovete usare una versione particola del script setup.py, così da omettere l'apertura del terminale:
- Codice:
-
from Cx_Freeze import setup, Executable
exe = Executables(
script = "prova.py",
base = "Win32GUI",
)
setup(
name = "prova",
version = "0.1",
description = "un stupidissmio programma di esempio",
executables = [exe]
)
per ora è tutto buon divertimento!!!