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

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Zibi
User
Beiträge: 3
Registriert: Freitag 20. Januar 2017, 17:13

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!
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Zibi
User
Beiträge: 3
Registriert: Freitag 20. Januar 2017, 17:13

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!
Zibi
User
Beiträge: 3
Registriert: Freitag 20. Januar 2017, 17:13

Kann es sein, dass swig aus irgendeinem Grund mein Objekt nicht umsetzten kann..und es verschweigt?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten