Mayavi: Das Speichern einer PDF-Datei unter OS X 10.11 führt dazu, dass eine beschädigte ZIP-Datei erstellt wird

Erstellt am 21. Juni 2016  ·  7Kommentare  ·  Quelle: enthought/mayavi

Wenn Mayavi über Conda installiert ist, führen Sie das folgende Skript in einem Jupyter-Notebook aus:

%gui qt
von mayavi importieren mlab
mlab.test_flow()

dann klicke in der GUI, um die Szene zu speichern, wenn ich die Dateiausgabe als "snapshot.pdf" einstelle, bekomme ich eine Fehlermeldung im Terminal, das das Notebook geöffnet hat:

2016-06-21 12:03:43.383 python[44385:6652218] modalSession wurde vorzeitig beendet - prüfen Sie, ob endModalSession wiedereintretend aufgerufen wird:

und es wird keine PDF-Datei erstellt - eine Datei namens snapshot.pdf.gz bleibt übrig.

Die Umgebung, in der ich hier arbeite:
env.txt

bug

Alle 7 Kommentare

Es gibt eine Reihe von Modulen, die an diesem Verfahren beteiligt sind, und aus der Fehlerausgabe ist nicht ersichtlich, was die Fehlerursache ist.

Können Sie das Problem reproduzieren, ohne das Notebook von einer normalen ipython-Eingabeaufforderung aus zu verwenden?
Kann man den Fehler mit WX reproduzieren?

Sie sollten auch die Tests durchführen (es könnte helfen, das Problem einzugrenzen)

# probably need to run these from site-packages
python -um nose.core -v tvtk
python -um nose.core -v mayavi

Hallo nochmal,

Beim Ausführen der tvtk-Tests habe ich folgenden Fehler:

FEHLER: Testen Sie, ob alle Attribute mit MinValue/MaxValue Traits sind

Traceback (letzter Anruf zuletzt):
Datei "/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py", Zeile 917, in test_trait_with_range
vtk_attr_name)
Datei "/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py", Zeile 899, in get_min_max_value
return (getattr(vtk_klass(), get_min_method)(),
SystemError: Fehlerrückgabe ohne Ausnahmesatz


106 Tests in 30,976 s durchgeführt

FEHLGESCHLAGEN (SKIP=3, Fehler=1)

Und ich bekomme keine Fehler bei den MayaVi-Tests.

Wenn ich es von der Jupyter-Konsole aus versuche, erhalte ich einen etwas anderen Fehler:

2016-06-21 14:12:20.658 python[45411:6739252] modalSession wurde vorzeitig beendet - prüfen Sie, ob endModalSession wiedereintretend aufgerufen wird:
GL2PS-Info: OpenGL-Feedback-Pufferüberlauf

WARNUNG: Der Kernel hat nicht auf eine is_complete_request reagiert. Setzen von use_kernel_is_complete auf False.

Ich kann Wx nicht verwenden, da ich die folgende Fehlermeldung erhalte, wenn ich versuche, dies als GUI festzulegen:

Eine Ausnahme ist aufgetreten. Verwenden Sie %tb, um den vollständigen Traceback anzuzeigen.

SystemExit: Dieses Programm benötigt Zugriff auf den Bildschirm.
Bitte führen Sie mit einem Framework-Build von Python aus, und nur, wenn Sie es sind
auf dem Hauptdisplay Ihres Mac angemeldet.

Zum Beenden: Verwenden Sie 'exit', 'quit' oder Ctrl-D.

Danke für die Information,

Bitte beachten Sie, dass ich im Moment kein Mac OS zum Testen zur Verfügung habe (ich bin kein Mac-Benutzer). Wenn Sie also ein paar weitere Dinge für mich ausprobieren können, können Sie das Problem später beheben.

Testen Sie, ob alle Attribute mit MinValue/MaxValue Eigenschaften sind

Obwohl es nicht gut ist, Tests nicht zu bestehen, glaube ich nicht, dass dieser Fehler mit Ihrem Problem zusammenhängt.

Wenn ich es von der Jupyter-Konsole aus versuche, erhalte ich einen etwas anderen Fehler:

Der Fehler bei OpenGL ist seltsam und es ist nicht klar, woher er kommt (kein Traceback).
Ist es möglich, die Befehle von einer python Eingabeaufforderung aus auszuführen, um zu vermeiden, dass die Jupyter-Konsole mit der Qt-Anwendung und der Ausgabe interagiert?

Ich kann Wx nicht verwenden, da ich die folgende Fehlermeldung erhalte, wenn ich versuche, dies als GUI festzulegen:

Ich sehe, dass Sie wxpython 3.0 verwenden. Bitte beachten Sie, dass in Traitsui 5.0.0 Unterstützung für Python 3.0 hinzugefügt wurde. Daher würde ich vorschlagen, dass Sie, da Sie die neueste Version für mayavi verwenden, auch die neuesten Versionen für traitsui, traits und pyface, apptools und envisage verwenden sollten.

Schließlich lässt mich die letzte Nachricht (auf wx) denken, dass wir Python auf einem kopflosen Computer (oder vielleicht einem Container) ausführen, ist das so?

Danke für die Hilfe.

aktualisieren

Unter Windows 10 mit Python 2.7.10 (64bit) und vtk 6.3 erhalte ich einen Segfault. Es sieht also so aus, als ob das Problem nicht mit Mac OSX zusammenhängt. Werde bald weitere Infos liefern.

@ryanpepper es sieht so aus, als ob tvtk.GL2PSExporter() fehlschlägt, wenn versucht wird, die PDF-Datei write erstellen. Es kann sich um einen vtk- oder tvtk-Fehler handeln, der jedoch ohne weitere Untersuchungen nicht sicher sein kann. Der normale ps Export sollte als Workaround funktionieren

@itziakos Großartig, danke für die Untersuchung.

@ryanpepper - es funktioniert tatsächlich, aber es sieht so aus, als ob es ein seltsames VTK-Problem gibt, bei dem VTK eine Snapshot.pdf.gz speichert, wenn die Datei wirklich eine PDF mit komprimiertem Inhalt ist. Wenn Sie die Datei also nur in Snapshot.pdf umbenennen, sollte sie nur gerendert werden fein. Wenn Sie die Komprimierung im angezeigten Dialogfeld deaktivieren, funktioniert dies auch, aber die Datei wird größer, obwohl die Datei als Snapshot.pdf gespeichert wird. :( Ich schließe dies, da dies wie ein VTK-Problem mit dem Speichern der Datei aussieht. Eine hackige Lösung wäre zu testen, ob die Datei als *.pdf.gz gespeichert ist und sie zu verschieben, aber das scheint ein Hack zu sein, aber ich ' Ich werde es schaffen Es ist Teil von https://github.com/enthought/mayavi/pull/416 Ich werde bei Bedarf einige weitere Korrekturen vornehmen, aber

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

indranilsinharoy picture indranilsinharoy  ·  9Kommentare

aestrivex picture aestrivex  ·  9Kommentare

scottstanie picture scottstanie  ·  4Kommentare

GaelVaroquaux picture GaelVaroquaux  ·  13Kommentare

relyativist picture relyativist  ·  16Kommentare