2009-10-24 15 views
6

Ho sviluppato un piccolo programma usando python e wxwidgets. È un programma molto semplice che utilizza solo un mini frame per visualizzare alcune informazioni quando necessario, e il resto del tempo non mostra nulla, solo un'icona nella barra delle applicazioni.come ridurre la dimensione di exe usando py2exe

Quando costruisco l'exe utilizzando py2exe (modalità exe per singolo file, ottimizzata), ottengo un file di dimensioni da 6 MB!

Ho provato a non includere alcune librerie o DLL che non erano necessarie, ma ancora, non riesco a vedere perché ottengo un file così grande solo per un mini frame e un'icona nella barra delle applicazioni.

C'è un modo per ridurre la dimensione del file exe generato con py2exe?

qui è quello che ho fatto per ridurre un po 'me stesso:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger', 
           'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl', 
           'Tkconstants', 'Tkinter'], 
        "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 
           'tk84.dll'], 

Grazie.

+1

forse ha incorporato il runtime? –

risposta

1

La maggior parte dello spazio è il runtime Python stesso. py2exe non "compila" il tuo programma per istruzioni native x86, o qualcosa del genere. Raggruppa semplicemente Python, i file * .pyc e tutti i moduli che il programma utilizza in un bundle che funziona da solo.

È quindi possibile scegliere di distribuire solo i file * .pyc e lasciare all'utente la possibilità di fornire la propria distribuzione Python e installare tutti i moduli necessari. Questa non è un'opzione molto popolare su Windows, ma è ciò che di solito accade ovunque.

+1

Sì, so che py2exe non compila il mio programma, ma quando stavo parlando delle "opzioni" (come mostrato nel mio post) disponibili per ridurre le dimensioni. Non mi aspetto di ottenere una dimensione inferiore al tempo di esecuzione, ma solo incorporare ciò di cui ho bisogno potrebbe portare a dimensioni accettabili solo per un mini frame. – attwad

4

Il fatto che il tuo programma sia semplice non significa che sia piccolo. Il tuo programma ha molte dipendenze attraverso lo stack wxWidget e 6 Mb non sembra così grande con tutto questo in mente.

Ma tornando alla domanda. Per ridurre un programma di py2exe generato, si possono fare alcune cose ovvie:

  1. Distribuire meno roba: sembra è già stato avviato su questa strada. Guarda tutto ciò che è distribuito insieme al tuo programma ed eliminalo se non è necessario. DllDepend può dirti perché una DLL è distribuita con il tuo programma (probabilmente perché un pyd ne ha bisogno). Per altri moduli, rimuovili e prova se funziona ancora ...

  2. Comprimilo meglio: esegui upx su ciascuna delle tue DLL. Comprimi il tuo programma/archivio finale con il massimo livello di compressione di 7zip.

Problemi correlati