Problem mit pickle: TypeError: can't pickle PySwigObject obj

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bjoern3M
User
Beiträge: 3
Registriert: Donnerstag 24. Oktober 2013, 22:36

Hallo alle zusammen,

ich schreibe aktuell eine Simulation und würde den Zustand gerne speichern.

Erste Frage:
Das beste Vorgehen scheint mir alle Nicht-GUI-Objekte mit pickle zu speichern. Sehe ich das richtig?

Zeite Frage:
Beim Speichern eines Objektes kommt die oben genannte Fehlermeldung "TypeError: can't pickle PySwigObject objects". Wie ich das verstehe, hat das was mit wxPython zu tun. Ich benutze kein wxPython. Eventuell hat PyGame was mit wxPython zu tun, aber auch das wird in dem zu speichernden Objekt nicht benutzt. Könnte die Fehlermeldung sich noch auf was anderes beziehen? Ich bin da relativ ratlos.

Vielen Dank für Eure Hilfe
BlackJack

@bjoern3M: SWIG ist ein Werkzeug um (halb)automatisch Code zu generieren der C- und C++-Bibliotheken an diverse Hochsprachen, unter anderem auch Python, anbindet. Das muss also nicht unbedingt GUI-Code sein. Du versuchst irgend etwas zu serialsieren was aus einer C- oder C++-Bibliothek kommt und wofür mit SWIG ein Python-Objekt erstellt wurde.

Ob `pickle` so ganz grundsätzlich dafür der beste Weg ist, hängt von den Anforderungen ab. Das sollte man IMHO nicht für Daten verwenden die dauerhaft gespeichert werden, sondern nur für welche bei denen es nicht so schlimm ist, wenn man sie in der nächsten Programmversion nicht mehr laden kann. Denn wenn sich etwas an den Datentypen und/oder der Organisation in Module und Packages ändert, kann man die Daten nicht mehr ohne weiteres deserialisieren. Halbwegs sicher ist das nur mit den Grunddatentypen, und dann kann man sich auch überlegen so etwas wie JSON zu nehmen, was den Vorteil hat sprachunabhängig zu sein.
Antworten