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