Frage zu cx_freeze

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

Hallo

zunächst die Eckdaten -> Python 2.7, QT-Designer 4.8, PyQt 4, erstellt unter Linux, "compilliert" unter Windows 7, da sind
aber auch die ganzen Programme drauf, sollte also egal sein.

Ich habe im Designer eine Oberfläche zusammengeklickt, dann in ERIC ein script hinzugefügt usw.

Dann hab ich eine setup.py erstellt:

Code: Alles auswählen

from cx_Freeze import setup, Executable
 
exe = Executable(
    script="nereus.py",
    base="Win32GUI",
    )
 
setup(
    name = "nereus",
    version = "0.1",
    description = "",
    executables = [exe]
    )
Das ganze dann per Eingabeaufforderung unter WIN 7 aufgerufen mit python.exe setup.py build
Danach hab ich im Python-Ordner eine Datei "build" mit dem ganzen kram drin incl. der nereus.exe, ... soweit so gut.

Wenn ich die .exe aufrufe, bekomme ich folgende Fehlermeldung:

Bild

Fehler im mainscript, hier das script:

Code: Alles auswählen

# Form implementation generated from reading ui file 'nereus.ui'
#
# Created: Thu Sep  5 20:31:42 2013
#      by: PyQt4 UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainDialog(object):
    def setupUi(self, MainDialog):

#blablabla, eine menge widgets und berechnungen, am Ende des scripts steht dann

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainDialog = QtGui.QDialog()
    ui = Ui_MainDialog()
    ui.setupUi(MainDialog)
    MainDialog.show()
    sys.exit(app.exec_())


main.mainloop()

Im script steht nichts von "atexit", was will mir die Fehlermeldung sagen und wie bekomme ich das weg?
Wenn ich mein script "nereus" unter IDLE oder ERIC aufrufe, läuft alles wunderbar.

Hat jemand einen Rat?

LG
Holger
BlackJack

@cougartrader: Du müsstest halt heraus finden wie man in der `setup.py` Module angibt die verwendet werden, aber nicht automatisch von cx_freeze als solche erkannt werden. Wie zum Beispiel das `atexit`-Modul aus der Standardbibliothek welches laut Stacktrace von PyQt verwendet wird.
cougartrader
User
Beiträge: 11
Registriert: Sonntag 11. August 2013, 15:12

@BlackJack,

hab vielen Dank für die Hilfe zur Selbsthilfe ;) !

Gesucht, was gefunden und die setup.py abgeändert in

Code: Alles auswählen

from cx_Freeze import setup, Executable

 
exe = Executable(
    script="nereus.py",
    base="Win32GUI",
    )
 
setup(
    name = "nereus",
    version = "0.1",
    description = "",
    options = {"build_exe": {"includes" : "atexit"}},
    executables = [exe]
    )
und siehe da, es läuft :D

Nochmals Danke, ich wusste nach deinem Posting ja, das es an der setup.py liegt!

LG
Holger
Antworten