Matplotlib не будет рисовать python3
Я установил matplotlib успешно в virtualenv. Теперь я пытаюсь его привлечь. Я знаю, как изменить бэкэнд, но у меня много проблем, чтобы понять, что изменить.
Кто-нибудь сумел полностью работать с python3? Если да, то как?
Я пробовал кучу вещей. Я прошел через все бэкэнды, чтобы увидеть, что все жалобы, а не я пытаюсь заставить только одного из них работать.
Также стоит отметить, что моя цель - интегрировать его в приложение Pyramid.
Вот что произошло до сих пор для всех разных бэкэндов:
- Agg: это был бэкэнд по умолчанию. он не рисует
- GTK: требует pygtk, который, по-видимому, не был перенесен на python3
- GTKAgg: ditto
- GTKCairo: говорит, что "требуемый пакет gtk" предполагает что-то в соответствии с вышеприведенными строками
- FltkAgg: Не похоже, что у него есть версия python3. Несмотря на то, что он упоминается в часто задаваемом FAQ пользователя python3. Наверное, это было просто волнение. gosh darnit
- MacOSX: Я запускаю ubuntu. считается неуместным
- QtAgg: требуется pyqt. см. Qt4Agg
- Qt4Agg: см. Установка PyQt4 в virtualenv
- TkAgg: ImportError: невозможно импортировать имя _tkagg. Я могу запустить импорт tkinter в интерпретаторе, хотя, поэтому я не совсем уверен, что сломалось еще
- WX: ImportError: Matplotlib backend_wx и backend_wxagg требуют wxversion, которая не была найдена
- WXAgg: ditto
- CocoaAgg: ImportError: для бэкэнда CococaAgg необходимо установить PyObjC!
- GTK3Cairo: ImportError: сервер GTK3 требует установки pygobject. Я попытался установить его, но когда я пытаюсь настроить его с помощью правильного питона, он жалуется на отсутствующие заголовки.
- GTK3Agg: нет модуля с именем cairo. но я думаю, что я удалю по той же проблеме, что и выше.
- cairo: Cairo backend требует, чтобы pycairo был установлен
- emf: Вы должны сначала установить pyemf из http://pyemf.sf.net. Похоже, что он должен делать вещи windowssey, поэтому это не может быть хорошим выбором.
- gdk: нет модуля под названием gobject
- pdf: выполняется, но не рисует
- pgf: ditto
- ps: ditto
- svg: ditto
- шаблон: ditto.
script Я использую для проверки моего бэкэнда:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
До сих пор я потратил waaay слишком много времени, пытаясь заставить python3.2 и qt4 играть хорошо, и у меня, похоже, все время возникают проблемы. Поэтому вместо того, чтобы продолжить мой подход к пробным и ошибкам, я хочу спросить:
- Каков наилучший вариант для Python3.2 и Pyramid?
- Как мне это сделать?
Тем временем я продолжу процесс пробной ошибки и обновляю свой вопрос по мере того, как я иду.
ПРИМЕЧАНИЯ на вещи, которые я пытаюсь
Для TkAgg:
Так как tkinter импортирует правильно, я предполагаю, что он установлен правильно (если я ошибаюсь, я полагаю, есть способ проверить его?). У этого парня http://ask.sagemath.org/question/626/sage-python-import-matplotlib-no-module-named была аналогичная проблема, но я уверен, что его настройка отличается от моей. Решение заключалось в том, чтобы найти tkagg.py в недрах каталога пакетов сайтов python3.2 и отредактировать выражение о нарушении для импорта. Мне трудно поверить, что корабли matplotlib сломаны (и я не могу запустить модифицированный код, предложенный...)
Для материала WX:
wxPython для Python 3 говорит, что пока еще нет поддержки для python3. Кроме того, wxPython не упоминает python3 на своем сайте, поэтому я предполагаю, что нет-go. исчерпание опций:/
Cocoa:
То же: Написание приложений Cocoa в Python 3
EMF:
ditto: http://pyemf.sourceforge.net/README.html
Ответы
Ответ 1
Я столкнулся с одной и той же проблемой, но после долгих усилий мне удалось заставить TkAgg работать (что давало ошибку импорта для _tkagg). Немного поздно, но кто-то может найти это полезным.
FWIW Я решил проблему следующим образом (для использования TkAgg):
- Установлен
tk-dev
из диспетчера пакетов
- Переустановлено
python3-tk
из диспетчера пакетов
- Восстановлено и переустановлено
matplotlib
из источника
- (и, конечно, установка TkAgg в matplotrc)
Если вы считаете, что установлены tk-dev
и python3-tk
правильно, вам нужно перестроить и переустановить matplotlib, чтобы он генерировал _tkagg.py
в вашем каталоге backends
.
Я использую Python3.3 (numpy 1.7) на LM14. Но я думаю, что он должен работать на Ubuntu/Python3.2
Ответ 2
Я делаю исходные сборки python 3.3.2 и matplotlib. Как отмечалось выше, TkAgg работает. Если вы строите все из источника:
- sudo apt-get install tk-dev
- Восстановить python3 (make clean;./configure; make)
- Очистить matplotlib (удалить яйцо из virtualenv, удалить объекты кеша из ~/.config/matplotlib)
- Восстановленный matplotlib из источника (rm -r build/; python setup.py build; установка python setup.py)
Наконец-то выяснилось, что глупая поле появляется с моей x = y-строкой.
ч....
Ответ 3
Matplotlib, похоже, сделал большой шаг к Python 3 с их 1.2.x release. matplotlib 1.2.0rc2 (+ numpy 1.7.0b2) работает для меня с
- Python 3.2.2 (virtualenv на Linux Mint 12)
- Python 3.3.0 (локальная установка из источника)
В обоих случаях matplotlib сообщает "TkAgg" в качестве используемого бэкэнд.
К сожалению, я не знаю, как и как это может работать с Pyramid.
Ответ 4
Я написал ответ для обеспечения matplotlib
в Python 3 virtualenv в Ubuntu 16.04 использует бэкэнд TkAgg
в https://askubuntu.com/a/785506/15003, который может быть полезен здесь. Результатом является установка tk-dev
, активация virtualenv и переустановка matplotlib
в virtualenv:
sudo apt install tk-dev
source venv/bin/activate
pip --no-cache-dir install -U --force-reinstall matplotlib
python -c 'import matplotlib as mpl; print(mpl.get_backend())'
должен теперь сказать TkAgg
.