Frage

Ich versuche, mit cx_Freeze ein einfaches Skript zu kompilieren, das ich mit Python3 und PyQt4 geschrieben habe, aber ich habe drei Probleme, die ich einfach nicht lösen kann.

  1. Die Symbole werden nicht angezeigt.Ich verwende dafür eine kompilierte Ressourcendatei, d.h.Ich habe eine .py-Datei importiert, die die Ressourcen enthält, und ich habe versucht, dem Rat zu folgen Hier, Ich kopiere den Ordner „imageformats“ in meinen Projektordner, aber nichts scheint zu funktionieren.

  2. Ich verwende nicht mehrere Python-Module, einschließlich tcl und ttk, also habe ich sie dem hinzugefügt excludes Möglichkeit.Sie scheinen jedoch immer noch hinzugefügt zu werden.

  3. Wenn ich versuche, mit zu kompilieren base='Win32GUI' Das Ausführen der erstellten Exe löst eine Ausnahme aus: 'NoneType' has no attribute 'encoding'

Ich bin mir ziemlich sicher, dass mit meinem Setup-Skript einfach etwas nicht stimmt, da die cx_Freeze-Dokumentation nicht sehr ausführlich ist. Ich hoffe also, dass jemand auf das Problem hinweisen kann.Hier ist das Setup-Skript.Ich werde das Skript, das ich kompiliere, nicht veröffentlichen, da es ziemlich lang ist, aber wenn es nötig ist, werde ich versuchen, eine prägnante Version zum Testen zu erstellen.

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}
)
War es hilfreich?

Lösung

(Beachten Sie unbedingt 1.)

2:In options={'build-exe'... muss es meiner Meinung nach build_exe sein (Unterstrich statt Bindestrich).

3:Versuchen Sie, auf etwas wie zuzugreifen sys.stdout.encoding überall? sys.stdout wird None sein, wenn Sie die Win32GUI-Basis verwenden.Sogar ein print() Ein Anruf könnte das auslösen.

Andere Tipps

Gelöst.Zusätzlich zu den Hinweisen von Thomas musste ich in den Optionen „imageformats“ unter „include-files“ und nicht unter „data_files“ finden.Mein endgültiges Skript sieht so aus:

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}
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top