Bad Marshal Fehler - Runsnake

8

Ich habe cProfile auf einem Python 3-Skript ausgeführt, gut gearbeitet und dann versucht, es mit Hilfe von runnsnake zu visualisieren. Wie auch immer, ich bekam einen leeren Bildschirm und den Fehler 'Bad Marshal Data'.

Ich habe die .pyc-Datei entfernt, aber das hat auch nicht funktioniert.

Der Code, den ich zur Installation von runnsnake verwendet habe, war:

%Vor%

Ich benutze UBUNTU.

Vielen Dank.

Hinweis: Ich sollte hinzufügen, dass ich alles installiert habe, während py3k aktiviert wurde

    
kat 23.09.2014, 16:12
quelle

1 Antwort

5

Ich hatte das gleiche Problem. Soweit ich das beurteilen kann, wurde das RunSnakeRun-Paket nicht nach Python3 portiert. Zumindest könnte ich es an python2 pipen, aber nicht an python3 (SyntaxError). Außerdem denke ich das Ausgabeformat von cProfile ist nicht kompatibel zwischen Python 2/3. Ich habe mir nicht die Zeit genommen, eine endgültige Bestätigung dafür zu finden, aber im Dokument cProfile class pstats.Stats (* filenames, stream = sys.stdout) , sie sagen" Die vom obigen Konstruktor ausgewählte Datei muss von der entsprechenden Version des Profils oder cProfile erstellt worden sein Spezifisch, es gibt keine Dateikompatibilität, die mit zukünftigen Versionen dieses Profilers gewährleistet ist, und es gibt keine Kompatibilität mit Dateien, die von anderen Profilern erstellt wurden. ". Dies scheint der Ursprung Ihres Problems zu sein. Zum Beispiel habe ich eine Profilausgabe von python3

gemacht %Vor%

und versuchte, es in RunSnakeRun zu öffnen und bekam den gleichen marhsal-Fehler, den Sie bekommen haben. Außerdem, wenn ich das tue

%Vor%

in Python3, es funktioniert wie ein Charme. Wenn ich es in Python2 mache, gibt es den Marshal-Fehler. Nun wird RunSnakeRun in python2 ausgeführt (es sei denn, Sie haben einen Weg gefunden, es in python3 laufen zu lassen). Also, meine Vermutung ist, dass Sie Ihre Profilerstellung in python3 durchgeführt haben und Werkzeuge verwenden, die auf python2 basieren, um sie zu analysieren, welche Werkzeuge erwarten, dass die Ausgabe mit python2 kompatibel ist.

Das RunSnakeRun-Projekt scheint für eine Weile nicht mehr aktiv zu sein (Copyright auf der Startseite ist 2005-2011) und es gibt keinen Hinweis darauf, dass es nach python3 portiert wird. Vielleicht ist die Betrachtung eines alternativen Visualisierungstools der beste Weg für Sie, wenn Sie in Python3 entwickeln wollen. pyprof2calltree in Kombination mit KCachegrind funktionierte für mich in Linux gut. Es kann eine ähnliche visuelle Ansicht der Profiling-Ausgabe bieten, die Sie von RunSnakeRun erhalten würden.

    
Christian O'Reilly 14.10.2015 09:02
quelle

Tags und Links