Seite 1 von 1
Py2Exe Probleme mit Objekten
Verfasst: Montag 12. Dezember 2011, 12:27
von berni-86
Hallo,
ich bin ganz neu im Forum angemeldet. Ich arbeite jetzt schon ca. ein halbes Jahr mit Python, Vorkentnisse habe ich in Java und PHP. Nach dem ich mich schon ziemlich gut in Python eingearbeitet habe und einige Skripte geschrieben habe, stehe ich nun vor einem Problem.
Kurz zum Aufbau:
Ich habe eine Objektorierntiertes Skript geschrieben mit mehreren Klassen. Die Main Klasse ruft dabei alle unteren Klassen auf. Dies Funktioniert in der Eclipseumgebung zu 100 Prozent.
Problem
Das Projekt habe ich nun mit py2exe in eine Exe Datei umschreiben lassen, funktionierte tadellos. Wenn ich die Exe Datei ausführe kommt es jedoch zu folgendem Fehler....
Code: Alles auswählen
Objekt = meineklasse(Paramter1, parmeter2)
TypeError: object.__new__() takes no paramter
Ich versteh die Fehlermeldung, jedoch verstehe ich nicht warum er die Parameter nicht findet. Ich habe die Paramter im Konstruktor festgelegt. Kann es sein das Py2exe eine obejktorientierte Programmierung nicht ünerstützt?
mfg
Re: Py2Exe Probleme mit Objekten
Verfasst: Montag 12. Dezember 2011, 12:33
von Hyperion
Hallo,
Kannst Du uns ein minimales, lauffähiges Beispiel posten und dazu exakt die Kommandos, mit welchem Du das in eine exe-Datei umwandeln willst und dieser Fehler auftritt und dazu die exakte Fehlermeldung?
Deine Terminologie verwirrt auch ein wenig... "Klassen" rufen (__call__?) andere Klassen auf? Klingt für mich nach viel Meta-Magie. Ohne konkreten Code kann man dazu nicht viel sagen.
Re: Py2Exe Probleme mit Objekten
Verfasst: Montag 12. Dezember 2011, 13:10
von berni-86
Ja, okay ich hab mcih etwas unverständllich ausgedrückt

. Ich meine natürlich, in der Main Klasse wird ein Objekt von den entsprechenden Klassen instanziert.
Main Klasse
Code: Alles auswählen
Test = Rob(pfadRobDatei,pfadA2LDatei)
Test.generateExcelFile()
Hier meine Klasse
Code: Alles auswählen
class Rob(object):
def __init__(self,pfadRobDatei,pfadA2LDatei ):
self.__pfadRobDatei = pfadRobDatei
self.__pfadA2LDatei = pfadA2LDatei
def generateExcelFile ()
..........
Ich habe das komplette Projekt mit "setup.py py2exe" über die Kommandozeile bauen lassen. (Dies funktioniert auch ohne Fehlermeldungen). Rufe ich jetzt die erzeugte Exe über die Konsole auf, tritt der folgende Fehler auf.
Fehler Konsole
Code: Alles auswählen
Test = Rob(pfadRobDatei,pfadA2LDatei)
TypeError: object.__new__() takes no paramters
Ich hoffe ich konnte dir mit den Information etwas weiterhelfen.
Re: Py2Exe Probleme mit Objekten
Verfasst: Montag 12. Dezember 2011, 17:16
von berni-86
Das Problem scheint nicht an py2exe zu liegen. Egal ob al EXE oder als Skript ausgeführt kommt folgende Fehlermeldung.
In Eclipse läuft das Programm jedoch, ohne Probleme. Kann es sein das ich den instanzierten Objekten, keine Anfangswerte über den Konstruktor aufruf zuweisen darf? Was in meinen Augen jeoch völliger blödsinn ist.
Re: Py2Exe Probleme mit Objekten
Verfasst: Montag 12. Dezember 2011, 17:28
von cofi
Wir brauchen ein *minimales, lauffaehiges Beispiel*, sonst können wir dir gar nichts zu deinem Problem sagen. Deine Vermutung ist aber in jedem Fall falsch (noch dazu ist `__new__` der Konstruktor, `__init__` nur der Initialisierer).
Ich wuerde ja mal darauf Tippen, dass du irgendwo etwas an den Namen `object` bindest.
Generell gilt: Der Ausführung in Eclipse kann man so nicht vertrauen, aber das hast du jetzt ja festgestellt.
Daneben noch der Hinweis: In Python gibt es keine privaten Attribute, missbrauche nicht name-mangling um den Zugriff zu erschweren, sondern verwende einen Unterstrich, um das als private fuer andere zu kennzeichnen.
Und der Hinweis auf PEP 8 darf natuerlich auch nicht fehlen.