Problemi Compilando Python3 & Pyqt4 con cx_freeze
-
13-12-2019 - |
Domanda
Sto cercando di compilare un semplice script che ho scritto usando Python3 e Pyqt4 usando CX_Freeze, ma ho tre problemi che non riesco a capire.
- .
-
Non riesco a far apparire le icone. Sto usando un file di risorse compilato per questo, vale a dire l'importazione di un .py contenente le risorse, e ho provato a seguire il consiglio qui , copiando la cartella ImageFormats nella mia cartella del progetto, ma nulla sembra funzionare.
-
Non sto usando Severl Python moduli tra cui TCL e TTK, quindi ho aggiunto loro all'opzione
excludes
. Tuttavia, sembrano ancora aggiunti. -
Quando provo a compilare con
base='Win32GUI'
eseguendo l'esecuzione di EXE creato Un'eccezione:'NoneType' has no attribute 'encoding'
Sono abbastanza sicuro che c'è solo qualcosa di sbagliato nel mio script di installazione poiché la documentazione CX_Freeze non è molto verbosa, quindi spero che qualcuno possa sottolineare il problema. Ecco lo script di installazione. Non ho intenzione di pubblicare la sceneggiatura che sto compilando perché è piuttosto lungo, ma se è necessario proverò a creare una versione concisa per il test.
from cx_Freeze import setup, Executable
exe = Executable(
script='cconvert.py',
base='Win32GUI'
)
options = dict(
excludes=['curses', 'email', 'tcl', 'ttk']
)
setup(
name="Coord Convertor",
version="0.1",
description="A Coordinate converter from DMS to DD",
requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
data_files=['imageformats'],
executables=[exe],
options={'build-exe': options}
)
.Soluzione
(nota sicuro circa 1.)
2: in opzioni= {'build-exe' ..., penso che abbia bisogno di essere build_exe (sottolineatura invece del dash).
3: Stai cercando di accedere a qualcosa come sys.stdout.encoding
ovunque?sys.stdout
non sarà nessuno quando si utilizza la base Win32Gui.Anche una chiamata print()
potrebbe innescare quella.
Altri suggerimenti
risolto.Oltre ai puntatori di Thomas, avevo bisogno di "ImageFormats" per essere in "Includi-Files" nelle opzioni, non "data_files".Il mio script finale è simile a questo:
from cx_Freeze import setup, Executable
exe = Executable(
script='cconvert.pyw',
base='Win32GUI'
)
options = dict(
excludes=['curses', 'email', 'tcl', 'ttk', 'tkinter'],
include_files=['imageformats']
)
setup(
name="Coord Convertor",
version="0.1",
description="A Coordinate converter from DMS to DD",
requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
executables=[exe],
options={'build_exe': options}
)
.