Mayavi: L'enregistrement du fichier PDF sur OS X 10.11 entraîne la production d'un fichier zip corrompu

Créé le 21 juin 2016  ·  7Commentaires  ·  Source: enthought/mayavi

Avec Mayavi installé via Conda, exécutez le script suivant dans un bloc-notes Jupyter :

%gui qt
de mayavi importer mlab
mlab.test_flow()

puis en cliquant dans l'interface graphique pour enregistrer la scène, si je définis la sortie du fichier comme "snapshot.pdf", j'obtiens un message d'erreur dans le terminal qui a ouvert le cahier :

2016-06-21 12:03:43.383 python[44385:6652218] modalSession a été quitté prématurément - recherchez un appel réentrant à endModalSession :

et aucun fichier PDF n'est créé - un fichier appelé snapshot.pdf.gz est laissé.

L'environnement dans lequel je travaille est ici :
env.txt

bug

Tous les 7 commentaires

Il y a un certain nombre de modules qui sont impliqués dans cette procédure et il n'est pas clair d'après la sortie d'erreur quelle est la raison de l'échec.

Pouvez-vous reproduire le problème sans utiliser le bloc-notes à partir d'une invite ipython normale ?
Pouvez-vous reproduire l'erreur en utilisant WX ?

Vous devriez également exécuter les tests (cela pourrait aider à affiner le problème)

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

Re-bonjour,

Lors de l'exécution des tests tvtk, j'ai l'erreur suivante :

ERREUR : Testez si tous les attributs avec MinValue/MaxValue sont des traits

Traceback (appel le plus récent en dernier) :
Fichier "/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py", ligne 917, dans test_trait_with_range
vtk_attr_name)
Fichier "/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py", ligne 899, dans get_min_max_value
return (getattr(vtk_klass(), get_min_method)(),
SystemError : retour d'erreur sans jeu d'exceptions


A fait 106 tests en 30,976s

ÉCHEC (SKIP=3, erreurs=1)

Et je ne reçois aucune erreur sur les tests MayaVi.

En l'essayant depuis la console jupyter, j'obtiens une erreur légèrement différente :

2016-06-21 14:12:20.658 python[45411:6739252] modalSession a été quitté prématurément - recherchez un appel réentrant à endModalSession :
Info GL2PS : débordement du tampon de rétroaction OpenGL

AVERTISSEMENT : le noyau n'a pas répondu à une requête is_complete_request. Définir use_kernel_is_complete sur Faux.

Je ne peux pas exécuter avec Wx car j'obtiens l'erreur suivante lorsque j'essaie de le définir comme interface graphique :

Une exception s'est produite, utilisez %tb pour voir le retraçage complet.

SystemExit : Ce programme a besoin d'accéder à l'écran.
Veuillez exécuter avec une version Framework de python, et uniquement lorsque vous êtes
connecté sur l'écran principal de votre Mac.

Pour quitter : utilisez 'exit', 'quit' ou Ctrl-D.

Merci pour l'info,

Veuillez noter que pour le moment, je n'ai pas de mac os disponible pour les tests (je ne suis pas un utilisateur de mac), donc si vous pouvez essayer quelques autres choses pour moi, cela m'aidera à déboguer le problème plus tard.

Tester si tous les attributs avec MinValue/MaxValue sont des traits

Bien qu'il ne soit pas bon d'échouer aux tests, je ne pense pas que cette erreur soit liée à votre problème.

En l'essayant depuis la console jupyter, j'obtiens une erreur légèrement différente :

L'erreur à propos d'OpenGL est étrange et on ne sait pas d'où elle vient (pas de trace).
Est-il possible d'exécuter les commandes à partir d'une invite python pour éviter que la console jupyter n'interagisse avec l'application Qt et la sortie.

Je ne peux pas exécuter avec Wx car j'obtiens l'erreur suivante lorsque j'essaie de le définir comme interface graphique :

Je vois que vous utilisez wxpython 3.0. Veuillez noter que la prise en charge de python 3.0 a été ajoutée dans traitsui 5.0.0. Je suggère donc que, puisque vous utilisez la dernière version de mayavi, vous devriez également utiliser les dernières versions de traitsui, traits et pyface, apptools et envisage.

Enfin, le dernier message (sur wx) me fait penser que nous exécutons python sur une machine sans tête (ou peut-être un conteneur) est-ce vrai?

Merci pour l'aide.

mettre à jour

Sur Windows 10 avec python 2.7.10 (64 bits) et vtk 6.3, j'obtiens une erreur de segmentation. Il semble donc que le problème ne soit pas lié à mac osx. Fournira plus d'informations bientôt.

@ryanpepper, il semble que le tvtk.GL2PSExporter() échoue lorsqu'il essaie de write le fichier pdf. Il peut s'agir d'un bogue vtk ou tvtk mais vous ne pourrez pas le savoir avec certitude sans plus d'investigation. L'exportation normale de ps devrait fonctionner comme une solution de contournement

@itziakos Super, merci pour votre enquête.

@ryanpepper -- cela fonctionne réellement mais il semble qu'il y ait un problème VTK étrange où VTK enregistre un snapshot.pdf.gz alors que le fichier est vraiment un PDF avec un contenu compressé, donc si vous renommez simplement le fichier en snapshot.pdf, il devrait être rendu juste amende. Si vous désactivez la compression dans la boîte de dialogue qui s'affiche, cela fonctionnera également, mais le fichier sera plus volumineux bien que le fichier soit enregistré en tant que snapshot.pdf. :( Je ferme ceci car cela ressemble à un problème VTK avec la façon dont il enregistre le fichier. Une solution de piratage serait de tester si le fichier est enregistré en tant que *.pdf.gz et de le déplacer mais cela semble être un hack mais je ' Cela fait partie de https://github.com/enthought/mayavi/pull/416 Je vais pousser quelques correctifs supplémentaires si nécessaire, mais pour l'instant, je ferme ce problème.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

rahulporuri picture rahulporuri  ·  3Commentaires

yassersouri picture yassersouri  ·  5Commentaires

igamenovoer picture igamenovoer  ·  7Commentaires

relyativist picture relyativist  ·  16Commentaires

GaelVaroquaux picture GaelVaroquaux  ·  13Commentaires