Seite 1 von 1

AttributeError: 'module' object has no attribut.. bei C++ Objekt

Verfasst: Freitag 20. Januar 2017, 17:24
von Zibi
Hallo Zusammen,
ich bin noch neu in Python.
Es geht um einen eigenen C++ block im Rahmen des GNURadio Frameworks.
Die einzelnen module werden innerhalb eines Pythonscripts mittels swig verbunden, einige Teile sind auch in python geschrieben.
Das funktioniert alles (compilieren und Ausführen des Scripts) bis ich eine Objekt aus einem Beispiel hinzufüge:

d_fir = new gr::filter::kernel::fir_filter_ccc(1, std::vector<gr_complex>(trainingssize, gr_complex(0,0)));

Alles wird korrekt compiliert jedoch meckert python bei der Ausführung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/zibi/Desktop/adaptiveFilter/GRC-Beispiele/mpsk.py", line 378, in <module>
    main()
  File "/home/zibi/Desktop/adaptiveFilter/GRC-Beispiele/mpsk.py", line 366, in main
    tb = top_block_cls()
  File "/home/zibi/Desktop/adaptiveFilter/GRC-Beispiele/mpsk.py", line 222, in __init__
    self.adaptive_filters_my_true_lms_dec_0 = adaptive_filters.my_true_lms_dec(0.2, (modulated_sync_word))
AttributeError: 'module' object has no attribute 'my_true_lms_dec'

Ich hatte zu dieser Fehlermeldung im Netzt viele verschiedene Aussagen gefunden.. das hat aber nicht weitergeholfen.

Habt ihr da Anregungen?
Vielen Dank!

Re: AttributeError: 'module' object has no attribut.. bei C++ Objekt

Verfasst: Freitag 20. Januar 2017, 17:47
von snafu
Da wird eben ein Zugriff auf ein nicht existierendes Attribut gemacht. Was die C++ Codezeile damit zu tun hat, solltest du vielleicht noch erklären.

Re: AttributeError: 'module' object has no attribut.. bei C++ Objekt

Verfasst: Freitag 20. Januar 2017, 18:59
von Zibi
Also mein C++ Code funktioniert in python bis ich
in .h mein Objekt deklariere:

Code: Alles auswählen

filter::kernel::fir_filter_ccc *d_fir;
und dieses in .cc benutze:

Code: Alles auswählen

d_fir= new filter::kernel::fir_filter_ccc(1, std::vector<gr_complex>(trainingssize, gr_complex(0,0)));
..
out[i] = d_fir->filter(&in[i]);
das ganze wird dann wunderbar compiliert funktioniert auf einmal im pythonscript (Fehlermeldung s.o). aber nicht mehr.

Ist sicher nen kleiner dummer Fehler, bin halt neu dabei!

Re: AttributeError: 'module' object has no attribut.. bei C++ Objekt

Verfasst: Freitag 20. Januar 2017, 20:52
von Zibi
Kann es sein, dass swig aus irgendeinem Grund mein Objekt nicht umsetzten kann..und es verschweigt?

Re: AttributeError: 'module' object has no attribut.. bei C++ Objekt

Verfasst: Sonntag 22. Januar 2017, 15:01
von __deets__
Ich kenne mich mit SWIG nicht aus, fand ich immer am bescheidensten von allen moeglichen Wrappern.

Mit boost::python und SPI (letzteres ist mein Favorit) koennte das sein: du musst natuerlich fuer alle Typen, die du irgendwie in die Python-Welt hieven willst (oder von dort rauspulen) einen Weg vorgeben, wie die konvertiert werden koennen.

boost::python und SIP geben dann ggf. Laufzeit-Fehler aus. Wie gesagt - was SWIG macht weiss ich nicht.