Domanda

Devo sviluppare un'applicazione GUI desktop di dimensioni medio-piccole, preferibilmente con Python come linguaggio di scelta a causa dei vincoli temporali.

Quali opzioni di libreria GUI ho che mi permettono di ridistribuire la mia applicazione autonomamente, supponendo che gli utenti non abbiano un'installazione Python funzionante e ovviamente non abbiano nemmeno le librerie GUI che sto usando?

Inoltre, come potrei fare per impacchettare tutto in file binari di ragionevole per ciascun sistema operativo di destinazione? (i miei obiettivi principali sono Windows e Mac OS X)

Aggiunta: Ho guardato WxPython, ma ho trovato molte storie horror di impacchettarlo con cx_freeze e ottenere binari da 30mb + e nessun vero consiglio su come effettivamente fare il packaging e quanto sia degno di fiducia lo è.

È stato utile?

Soluzione

http://wiki.wxpython.org/CreatingStandaloneExecutables

Non dovrebbe essere così grande se non si è riusciti a includere la build di debug di wx. Mi sembra di ricordare circa 4Mb per il python.dll e simile per wx.

Altri suggerimenti

Python ha un toolkit GUI incorporato chiamato TKinter che si basa sulla libreria Tk della programmazione TCL linguaggio. È molto semplice e non ha tutte le funzionalità che ci si aspetta in Windows Forms o GTK, ad esempio, ma se è necessario disporre di un toolkit indipendente dalla piattaforma, non vedo altra scelta tenendo presente che non si desidera aumentare così tanto il file binario.

Tkinter non è affatto difficile da usare poiché non ha milioni di widget / controlli e opzioni ed è il toolkit predefinito incluso nella maggior parte delle distribuzioni di Python, almeno su Windows, OSX e Linux.

GTK e QT sono più belli e più potenti ma hanno un grosso svantaggio per te: sono pesanti e dipendono da terze librerie, in particolare GTK che ha molte dipendenze che rendono un po 'difficile distribuirlo incorporato nel tuo software.

Per quanto riguarda la creazione binaria, so che esiste py2exe che converte il codice python in codice eseguibile win32 (.exe) ma non sono sicuro che ci sia qualcosa di simile per OSX. Sei preoccupato perché le persone potrebbero vedere il codice sorgente o solo così puoi raggruppare tutto in un unico pacchetto? Se desideri semplicemente raggruppare tutto ciò che non è necessario per creare un eseguibile autonomo, puoi facilmente creare un programma di installazione:

Creazione distribuibile in python

Questa è una guida su come distribuire il software al termine.

http://Gajim.org per Windows utilizza python e PyGtk. Puoi controllare come hanno fatto. Inoltre, c'è PyQt per GUI (e wxpython menzionato in precedenza).

Non ho alcuna esperienza nella creazione di app autonome per piattaforme diverse da Windows.

Detto questo:

Tkinter: funziona bene con py2exe. Python Megawidgets (una "libreria di espansione" per Tkinter) funziona anche bene, ma fa cose funky con importazioni dinamiche, quindi è necessario combinare tutti i componenti in un file di grandi dimensioni " pmw.py " e aggiungilo al tuo progetto (beh, avrai anche pmwblt.py e pmwcolor.py). Ci sono istruzioni su come eseguire questa operazione da qualche parte (sul wiki di py2exe o nei documenti PMW). Tix (un'estensione di Tk che puoi usare con Tkinter) non funziona con py2exe, o almeno questa è stata la mia esperienza circa quattro anni fa.

wxPython funziona bene anche con py2exe. Ho appena controllato un'app che ho; l'intera distribuzione è arrivata a circa 11 MB. La maggior parte erano le DLL wx e i file .pyd, ma non riesco a vedere come lo eviteresti. Se stai prendendo di mira Windows XP, devi includere un manifest in setup.py altrimenti sembrerà brutto. Vedi questa email per i dettagli.

Ho usato me stesso py2Exe - è davvero semplice (almeno per le piccole app).

Combinazione che conosco: wxPython, py2exe, upx

La chiave per risolvere la tua ultima preoccupazione riguardo alle dimensioni della distribuzione sta usando upx per comprimere le DLL . Sembra che supportano eseguibili MacOS. Pagherai una penalità di decompressione iniziale quando le DLL vengono caricate per la prima volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top