J'ai un module python qui importe un module généré avec swig. Lorsque j'essaie d'appeler la fonction show() de matplotlib plus tard dans ce module, python se bloque sans aucun indice, ce qui ne va pas. Lorsque je commente la déclaration d'importation avec le module swig généré, tout fonctionne correctement. Quelqu'un at-il une idée de ce qui pourrait être la raison de ce comportement? Je suis conscient que c'est une formulation très imprécise du problème. Mais, je ne m'attends pas à une solution à mon problème, juste un indice à l'endroit où je pourrais regarder pour trouver le problème. Merci.Python se bloque lors du traçage avec matplotlib dans le module d'importation swig généré wrapper
Répondre
Je commencerais par lancer le script sous gdb et regarder la trace de la pile. Les versions récentes de gdb prennent en charge le débogage Python.
$ gdb python
(gdb) run /path/to/script.py
# wait for crash #
(gdb) bt
# stack trace here #
Plus information here.
Vous pouvez également essayer Python en mode verbeux en utilisant python -v. –
Je soupçonne que vous appelez figure.show au lieu de plt.show()
Le crash de script suivant:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([25, 43, 65], [3500, 5500, 5800])
fig.show() # use plt.show() instead
Ce script fonctionne bien:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([25, 43, 65], [3500, 5500, 5800])
plt.show()
En fait, il ne plante pas. Il termine simplement les exits de fin, puisque fig.show() n'attendra pas la fermeture de la fenêtre de tracé. De plus, je ne vois pas comment cela pourrait être affecté par la présence d'un autre module. –
pourrait-il liée à la pollution de l'espace de noms? Si vous changez l'ordre des importations (pour le module swig et matplotlib) l'erreur change-t-elle? Cela peut également être utile si vous publiez au moins les instructions d'importation. – unutbu