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.

    .
  1. 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.

  2. Non sto usando Severl Python moduli tra cui TCL e TTK, quindi ho aggiunto loro all'opzione excludes. Tuttavia, sembrano ancora aggiunti.

  3. Quando provo a compilare con base='Win32GUI' eseguendo l'esecuzione di EXE creato Un'eccezione: 'NoneType' has no attribute 'encoding'

  4. 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}
    )
    
    .

È stato utile?

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}
)
.

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