Seite 1 von 1
Attribut von Modul wird nicht gefunden
Verfasst: Mittwoch 13. Januar 2010, 18:19
von Flo668
Hallo Ihr,
leider komme ich nicht drauf, warum sich Python aus meinem Programm stets mit der Meldung:
ui = testdialog.Ui_DialogTesting()
AttributeError: 'module' object has no attribute 'Ui_DialogTesting'
verabschiedet.
Dem ganzen liegt folgender Code zu Grunde:
Im aufrufenden Modul:
Code: Alles auswählen
def main():
import testdialog
app = QtGui.QApplication(sys.argv)
window = QtGui.QDialog()
ui = testdialog.Ui_DialogTesting()
das aufgerufene Modul (testdialog) sieht so aus:
Code: Alles auswählen
class Ui_DialogTesting(object):
def setupUi(self, DialogTesting):
DialogTesting.setObjectName("DialogTesting")
Wenn Ihr eine idee habt, immer her damit. Vielen Dank!
Verfasst: Mittwoch 13. Januar 2010, 18:33
von Hyperion
Verfasst: Donnerstag 14. Januar 2010, 11:35
von Masaru
Hallo,
falls das Problem nach einem Neustart Deines Rechners immer noch auftritt, geh mal in das entsprechende Verzeichnis wo Dein "testdialog" Modul liegt, und lösche die dazugehörige "
testdialog.pyc" Datei.
Wohl gemerkt: nur die .pyc, nicht die .py selber.
>>Masaru<<
Verfasst: Donnerstag 14. Januar 2010, 12:22
von Flo668
Zunächsteinmal vielen Dank!
dir() hatte ich glatt vergessen.
Wenn ich die *.pyc loesche und folgendes ausführe:
Werden die dort vermuteten Attribute auch erkannt (mich interessiert ja in erster Linie Ui_DialogTesting):
['QtCore', 'QtGui', 'Ui_DialogTesting', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
Die *.pyc, die dann erstellt wird, ist 2KB groß.
Führe ich aber (nach Löschen der *.pyc) den im Eingangsposting zitierten Codeblock aus, erhalte ich nach wie vor die gleiche Fehlermeldung.
Lösche ich die *.pyc und führe diesen Codeblock aus, ist die *.pyc nur 1KB groß und ein dir() zeigt mit das gesuchte Attribut auch nicht an.
Jetzt bin ich ein wenig verwirrt....
Verfasst: Donnerstag 14. Januar 2010, 12:27
von Masaru
Ich tippe mal ganz stark, Du hast irgendwo noch eine zweite "testdialog.
py" Datei rumliegen, die vorranging hinsichtlich der Importierungs-Reihenfolge ist

.
Suche mal sowohl in Deinem Python-Installations- als auch Projekt-Verzeichnis (wo Deine Modul-Dateien liegen) nach einer "testdialog.py".
>>Masaru<<
Verfasst: Donnerstag 14. Januar 2010, 12:29
von snafu
Offensichtlich ist das importierte `testdialog` nicht das, was du erwartest. Gibt es zwei Dateien mit diesem Namen? Hast du die aktuelle Version nicht gespeichert? Was sagt ein `reload(testdialog)`?
Verfasst: Donnerstag 14. Januar 2010, 12:40
von jens
Was sagt ein testdialog.__file__ ?
Verfasst: Donnerstag 14. Januar 2010, 12:47
von Flo668
Dank Eurer Hilfe konnte ich das Problem eingrenzen. "testdialog.py" wird dynamisch von pyQt erzeugt und da leigt der Hund begraben.
Wenn ich die Datei erzeugen lasse, dann die *.pyc.lösche und danach den Codeblock von oben ausführe, funktioniert es.
Ergo irgendwas hakt beim PyQt und da muss ich wohl nochmal ran. Danke für die Tips.
Verfasst: Donnerstag 14. Januar 2010, 12:49
von Hyperion
Wie erzeugst Du denn die GUI? Per pyuic? Oder lädst Du sie dynamisch?