2013-12-16 12 views
10

Ora sto lavorando con Pyinstaller. Ho uno script che ottenere immagini da una cartella img ..Pyinstaller: genera file exe + cartella (in modalità --onefile)

/python 
|----/img 
|----|----icon1.ico 
|----|----icon2.ico 
|----maint.py 

mio script per generare .exe è

pyinstaller.py --windowed --noconsole --clean --onefile maint.py 

il problema è che solo generare il file exe, ma l'intera cartella/img è omesso.

Domanda: quale sintassi adizionale devo inserire nella riga precedente per ottenere automaticamente la cartella .exe +/img cartella?

Aggiornamento 12/18/2013

voglio dire: che dopo l'esecuzione dello script pyinstaller.py, con tutti gli argomenti, devo vedere nella cartella/dist: il file .exe + il/cartella con tutti i file IMG icone o bitmap che ho per la mia applicazione

Grazie

+0

Cosa intendi con "per ottenere automaticamente il file .exe +/cartella img"? – Blender

+0

Basta copiare quella cartella in '/ dist' una volta superato il processo di compilazione. – poke

+0

@Blender Voglio dire: che dopo l'esecuzione dello script pyinstaller.py, con tutti gli argomenti, devo vedere nella cartella/dist: il file .exe + la cartella/img con tutte le icone oi file bitmap che ho per la mia applicazione – MigRome

risposta

12

Aggiornamento 2013/12/19

Finalmente, abbiamo capito!

0. Sto lavorando con la versione corrente di PYInstaller + Python 2.67 con Sublime Text come editor.

1. Nel caso in cui lo script Py richieda alcuni file, icone, immagini, è necessario includere una funzione che recupera questi file dalla cartella del progetto (in sviluppo) o forma la cartella dati temporanea (in caso di distribuzione). Questo script DEVE essere nel tuo codice esattamente nella parte in cui metti i percorsi dei parenti per ottenere le risorse. Si prega di seguire esattamente questa linea guida: https://stackoverflow.com/a/13790741

2. Dopo il codice precedente, è necessario eseguire per la prima volta il comando pyinstaller -come posto nella mia domanda post-.

3. Ora, aprire il file .spec generato dopo l'esecuzione del PYInstaller (che si trova in PYinstaller /) di comando e aggiungere, dopo la linea "a.binaries", la riga successiva nel file EXE) Funzione (:

exe = EXE(pyz, 
      a.scripts, 
      a.binaries, 
      Tree('..\\python\\images', prefix='images\\'), 
.... 

Tenete a mente che in Albero (...) funzione il primo argomento è la cartella di mettere fuori: che significa che voglio includere tutto il contenuto di questa cartella (si noti che sto mettendo un percorso relativo rispetto al file AppStart.py) nel contenitore del file del mio file .EXE.

4. Dopo che la modifica ri-eseguire il comando pyinstaller, ma in questo caso punta al mio file .spec:

pyinstaller.py --windowed --noconsole --clean --onefile AppStart\AppStart.spec 

E infine il mio App può essere eseguito come eseguibile senza bisogno di copiare e incolla tutte le cartelle esterne come qualcuno ha menzionato. Ma come sempre considero il modo pratico.

Grazie per il vostro supporto.

+1

Questo è il modo più affidabile che ho trovato per includere le directory complete! Guarda cosa fanno le persone senza questa opzione :) http://stackoverflow.com/a/12033695/2230844 – denfromufa

+0

La risposta non risponde alla domanda iniziale. Non c'è modo di dire a pyinstaller di copiare da solo file o directory nella directory dist, invece di aggiungerli al pacchetto? – bitek

Problemi correlati