Matplotlib не показывает графики (проблемы совместимости EPD)

Я недавно установил EPD 7.3-2 (бесплатная версия) на мою Ubuntu 12.04 (64 бита). У меня возникли проблемы при попытке использовать ipython, я получил следующую ошибку:

ImportError: Gtk * backend требует установки pygtk.

Так что я нашел эту статью:

https://support.enthought.com/entries/22961778-epd-for-mac-os-x-32-and-64-bit-versions

и даже подумал, что для Mac OSX он работал на моей машине с Linux. Модификации, которые я сделал, помещали бэкэнд так:

backend      : Qt4Agg #GTKAgg
backend.qt4 : PySide

Так что раньше это был GTKAgg. Но теперь у меня новая проблема. Когда я пытаюсь построить с Pylab простой график, например:

from pylab import *
plot([1,2,3])
show()

Ничего не выскакивает... И я получаю следующую ошибку:

Ошибка в atexit._run_exitfuncs: трассировка (последний вызов был последним):
Файл "/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/atexit.py", строка 24, в файле _run_exitfuncs func(*targs, **kargs) "/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/site-packages/matplotlib/_pylab_helpers.py", строка 82, в файле destroy_all manager.destroy()"/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", строка 367, в файле destroy self._widgetclosed)

RuntimeError: внутренний объект C++ (PySide.QtGui.QMainWindow) уже удален.

Ошибка в sys.exitfunc: трассировка (последний вызов был последним): файл "/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/atexit.py", строка 24, в функции _run_exitfuncs (* тарги, ** карги)
Файл "/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/site-packages/matplotlib/_pylab_helpers.py", строка 82, в destroy_all manager.destroy() ()
Файл "/home/mela/Librairies/epd_free-7.3-2-rh5-x86_64/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", строка 367, в файле destroy self._widgetclosed)

RuntimeError: внутренний объект C++ (PySide.QtGui.QMainWindow) уже удален.

И я действительно не понимаю, что это значит или что мне делать. Любая подсказка будет оценена.

1 ответ

Итак, я нашел свою проблему. Прежде всего, из проблемы я понимаю, что он пытается закрыть окно, которое уже закрыто, поэтому я искал почему, и похоже, что теперь отображения pyplot должны закрываться сразу после, поэтому, когда я добавляю pl.show(block=True). Теперь у меня есть дисплей, но также ошибка сегментации.

После разных бэкендов похоже, что TkAgg решает обе проблемы. Так что нет проблем с совместимостью, и я вижу свои графики.

PS: для смены бэкенда с matplotlib перейдите в ~/.matplotlib и отредактируйте файл matplotlibrc

Другие вопросы по тегам