Fehler beim umwandeln in .exe mit pyInstaller

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
raorao
User
Beiträge: 24
Registriert: Mittwoch 30. Dezember 2009, 15:35

Hoi mitenand!

Beim umwandeln der Datei Main.py, welche unter anderem Meldung.py importiert erscheint beim Ausführen von Build folgender Fehler in der Konsole:

File "C:\Python26\trunk\mf.py", line 117, in getmod
co = compile(string.replace(stuff, "\r\n", "\n"), py[0], 'exec')
File "Meldung.py", line 1
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
on win32
^
SyntaxError: invalid syntax

Anscheinend liegt in Linie 1 in Meldung.py ein Syntax Fehler vor, welcher aber bei normaler Ausführung von Main.py nicht erscheint. Hier daher der Code von Meldung.py:

Code: Alles auswählen

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import sys


class Eingabe(object):
    def setupUi(self, Dialog, titel, text):
        Dialog.setObjectName("Dialog")
        self.widget = QtGui.QWidget(Dialog)
        self.widget.resize(300, 150)
        self.widget.setObjectName("widget")
        self.gridLayout = QtGui.QGridLayout(self.widget)
        self.gridLayout.setObjectName("gridLayout")
        self.labelMeldung = QtGui.QLabel(self.widget)
        self.labelMeldung.setObjectName("labelMeldung")
        self.gridLayout.addWidget(self.labelMeldung, 0, 0, 1, 1, QtCore.Qt.AlignCenter)
        self.pushButtonOK = QtGui.QPushButton(self.widget)
        self.pushButtonOK.setObjectName("pushButtonOK")
        self.pushButtonOK.setFixedSize(75, 23)
        self.gridLayout.addWidget(self.pushButtonOK, 1, 0, 1, 1, QtCore.Qt.AlignCenter)
        
        self.retranslateUi(Dialog, titel, text)
        QtCore.QObject.connect(self.pushButtonOK, QtCore.SIGNAL("clicked()"), self.onOK)
        QtCore.QMetaObject.connectSlotsByName(self)

    def retranslateUi(self, Dialog, titel, text):
        Dialog.setWindowTitle(titel)
        self.labelMeldung.setText(text)
        self.pushButtonOK.setText(QtGui.QApplication.translate("Dialog", "OK", None, QtGui.QApplication.UnicodeUTF8))
        

class Dialog(QtGui.QDialog, Eingabe): 
    def __init__(self, titel, text):
        QtGui.QDialog.__init__(self)
        self.setupUi(self, titel, text)
        self.exec_()

    def onOK(self):
        self.close()
Der Code wie immer beliebig anfängerhaft, ich weiss, sorry...
Kennt jemand einen Lösungsansatz für dieses Problem?

Herzlichen Dank für die Hilfe!
Liebe Grüsse
raorao
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die Fehlermeldung passt nicht zu der Datei. Zeig uns doch auch mal die `setup.py` und wie du `py2exe` aufrufst.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

cofi hat geschrieben:Die Fehlermeldung passt nicht zu der Datei. Zeig uns doch auch mal die `setup.py` und wie du `py2exe` aufrufst.
Also in der Überschrift steht PyInstaller...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

snafu hat geschrieben:Also in der Überschrift steht PyInstaller...
Ja, mein Fehler. Was ich geschrieben habe bleibt aber bestehen .. man muss nur `py2exe` mit `pyinstaller` ersetzen. Vielleicht noch zusaetzlich der Hinweis, dass man die SVN-Version nutzen sollte.
raorao
User
Beiträge: 24
Registriert: Mittwoch 30. Dezember 2009, 15:35

Sorry, habe ganz vergessen, die Konsolenaufrufe zu posten:

C:\Python26\Vocabulaaron2>C:\Python26\trunk\makespec.py --icon=Logo.png Main.py
wrote C:\Python26\Vocabulaaron2\Main.spec
now run Build.py to build the executable

C:\Python26\Vocabulaaron2>C:\Python26\trunk\Build.py Main.spec

Nun hats aber so oder so funktioniert und zwar indem ich alle erforderlichen Dateien, also nicht bloss Main.py, sondern auch Meldung.py etc. in den Ordner Vocabulaaron2 gespeichert habe bevor ich die .spec Datei gemacht habe. Zuvor war nur Main.py und Logo.png in diesem Ordner. Die .exe funktioniert nun super, einziger Schönheitsfehler bleibt, dass das mit der Zuweisung des Icons einfach nie klappt, obwohl die Bilddatei brav im selben Verzeichnis gespeichert ist. Der .exe Datei wird jedesmal einfach irgend ein Standard-Icon zugewiesen statt Logo.png. Woran könnte dies liegen, ist die Syntax der Option nicht korrekt oder das Dateiformat ungeeignet (konnte zwar in der Doku nichts dergleichen finden) oder funktioniert diese Option schlicht nur bei schönem Wetter???

Herzlichen Dank trotzdem für eure Hilfe!
Liebe Grüsse!
raorao
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

cofi hat geschrieben:
snafu hat geschrieben:Also in der Überschrift steht PyInstaller...
Ja, mein Fehler. Was ich geschrieben habe bleibt aber bestehen .. man muss nur `py2exe` mit `pyinstaller` ersetzen. Vielleicht noch zusaetzlich der Hinweis, dass man die SVN-Version nutzen sollte.
Das ist nicht mehr wirklich aktuell. Der Autor hat vor ein paar Monaten ein neues Release rausgebracht. Gut, das ist jetzt auch schon wieder eni paar Monate alt. Vermutlich werden da entsprechend neue Verbesserungen in der SVN-Version sein, die im aktuellen Release noch nicht drin sind, aber es ist bei weitem nicht mehr so krass.
raorao
User
Beiträge: 24
Registriert: Mittwoch 30. Dezember 2009, 15:35

Super, herzlichen Dank für die Hilfe. Nach der Neuinstallation funktionierte nun alles nach Wunsch, selbstverständlich muss das Icon nicht wie oben aufgeführt als .png Datei sondern als .ico Datei vorliegen, aber dann funktioniert mit der neuen Version selbst das...
Antworten