python - Problemer med at sammensætte python3 & pyqt4 med cx\_freeze

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at kompilere et simpelt script, jeg skrev ved hjælp af Python3 og PyQt4 ved hjælp af cx\_Freeze, men jeg har tre problemer, som jeg bare ikke kan finde ud af.



  1. Jeg kan ikke få ikonerne til at blive vist. Jeg bruger en kompileret ressourcefil til den, dvs. at importere en .py indeholdende ressourcerne, og jeg har forsøgt at følge vejledningen her og kopiere mappen imageformats til min projektmappe, men intet synes at virke.

  2. Jeg bruger ikke severl python-moduler, herunder tcl og ttk, så jeg tilføjede dem til indstillingen excludes. Men de synes stadig at blive tilføjet.

  3. Når jeg forsøger at kompilere med base='Win32GUI' kører den oprettede exe en undtagelse: 'NoneType' has no attribute 'encoding'



Jeg er ret sikker på, at der kun er noget galt med mit installationsskript, da cx\_Freeze-dokumentationen ikke er meget fornuftig, så forhåbentlig kan nogen påpege problemet. Her er installationsskriptet. Jeg skal ikke skrive scriptet jeg ' m compiling fordi det er ganske lang, men hvis det er nødvendigt, vil jeg forsøge at lave en kortfattet version til testning.


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

Bedste reference


(Vær sikker på om 1.)


2: I muligheder={'build-exe' ..., mener jeg, at det skal være build\_exe (understreg i stedet for dash).


3: Forsøger du at få adgang til noget som sys.stdout.encoding hvor som helst? sys.stdout vil være Ingen, når du bruger Win32GUI-basen. Selv et print() opkald kan udløse det.

Andre referencer 1


Løst. Udover Thomas 'pointers havde jeg brug for' imageformats 'for at være under' inkluder-filer 'i mulighederne, ikke' data\_files '. Mit afsluttende script ser sådan ud:


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