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
Was sagt denn ein

Code: Alles auswählen

dir(testdialog)
?

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:

Code: Alles auswählen

import testdialog
print(dir(testdialog))

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?