Matplotlib не будет рисовать Python3

Я успешно установил matplotlib внутри virtualenv. Сейчас я пытаюсь заставить его рисовать. Я знаю, как изменить бэкэнд, но у меня много проблем с выяснением, на что его менять.

Кому-нибудь удалось заставить его полностью работать с python3? Если да, то как?

Я перепробовал кучу вещей. Я прокрутил все бэкэнды, чтобы увидеть, каковы все жалобы, а не я пытаюсь заставить работать только одну из них.

Также, возможно, стоит отметить, что моя цель - интегрировать его в приложение Pyramid.

Вот что произошло до сих пор для всех различных бэкэндов:

  • Agg: это был бэкэнд по умолчанию. это не рисует
  • GTK: требуется pygtk, который явно не был портирован на python3
  • GTKAgg: то же самое
  • GTKCairo: говорит, что 'обязательный пакет GTK' предполагает что-то вроде выше
  • FltkAgg: не похоже, что у него есть версия Python3. Хотя это упоминается в FAQ по пользовательскому интерфейсу python3. Я предполагаю, что это была просто пробуждение. черт возьми
  • MacOSX: я использую Ubuntu. считается неуместным
  • QtAgg: требуется pyqt. см. Qt4Agg
  • Qt4Agg: см. Установка PyQt4 в virtualenv
  • TkAgg: ImportError: невозможно импортировать имя _tkagg. Я могу запустить import tkinter в интерпретаторе, так что я не совсем уверен, что еще не работает
  • WX: ImportError: Matplotlib backend_wx и backend_wxagg требуют wxversion, который не был найден
  • WXAgg: то же самое
  • CocoaAgg: ImportError: бэкэнд CococaAgg требует установки PyObjC!
  • GTK3Cairo: ImportError: бэкэнд GTK3 требует установки pygobject. Я попытался установить его, но когда я пытаюсь настроить его с правильным питоном, он жалуется на отсутствие заголовков
  • GTK3Agg: нет модуля с именем cairo. но я уверяю, я столкнусь с той же проблемой, что и выше
  • Каир: Каирский бэкэнд требует, чтобы Pycairo был установлен
  • emf: сначала нужно установить pyemf с http://pyemf.sf.net/. Похоже, что он должен делать WindowSie вещи, так что это не может быть хорошим выбором
  • GDK: нет модуля с именем gobject
  • PDF: работает, но не рисует
  • пгф: то же самое
  • PS: то же самое
  • SVG: то же
  • шаблон: то же самое.

Скрипт, который я использую для тестирования моего бэкэнда:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

До сих пор я потратил слишком много времени на то, чтобы заставить python3.2 и qt4 играть хорошо, и я, кажется, сталкиваюсь с проблемами при каждом повороте. Поэтому вместо того, чтобы продолжать метод проб и ошибок, я хочу спросить:

  1. Каков наилучший вариант для Python3.2 и Pyramid?
  2. Как мне это сделать?

Тем временем я продолжу с методом проб и ошибок и обновлю свой вопрос, как я иду.

ЗАМЕЧАНИЯ о вещах, которые я пытаюсь

Для 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 на своем сайте, так что я думаю, что это не так. заканчиваются варианты: /

Какао:

То же самое: написание приложений Какао в Python 3

EMF:

То же самое: http://pyemf.sourceforge.net/README.html

5 ответов

Решение

Я столкнулся с точно такой же проблемой, но после долгих усилий мне удалось заставить TkAgg работать (что приводило к ошибке импорта для _tkagg). Немного поздно, но кто-то может найти это полезным.

Я решил проблему следующим образом (чтобы использовать 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

Я занимался сборкой исходного кода на python 3.3.2 и matplotlib. Как отмечено выше, TkAgg работает. Если вы строите все из исходного кода:

  1. sudo apt-get установить tk-dev
  2. Перестройте python3 (make clean; ./configure; make)
  3. Очистить matplotlib (удалить яйцо из virtualenv, удалить объекты кэша из ~/.config/matplotlib)
  4. Перестроил matplotlib из исходного кода (rm -r build/; python setup.py build; python setup.py install)

Наконец-то я увидел эту глупую коробку с моей строкой x=y.

часов....

Matplotlib, похоже, сделал большой шаг к Python 3 с выпуском 1.2.x. у меня работает matplotlib 1.2.0rc2 (+ numpy 1.7.0b2)

  • Python 3.2.2 (virtualenv на Linux Mint 12)
  • Python 3.3.0 (локальная установка из исходного кода)

В обоих случаях matplotlib сообщает "TkAgg" как используемый бэкэнд.

К сожалению, я понятия не имею, может ли / как это работать с Пирамидой.

Я написал ответ для обеспечения matplotlib в Python 3 virtualenv в Ubuntu 16.04 использует TkAgg бэкэнд на https://askubuntu.com/a/785506/15003 который может быть полезен здесь. Результатом является установка tk-dev, активируйте virtualenv и переустановите matplotlib в виртуальности:

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,

Для меня сработало следующее:

  • деактивировать,
  • sudo apt-get install python3-matplotlib libfreetype6-dev
  • (активировать virtualenv) источник / home /...,
  • pip install numpy matplotlib (возможно, удалите, а затем установите, если он у вас уже есть, или, возможно, попробуйте создать новый venv)
  • pip install --upgrade pip внутри venv также может помочь (по неизвестной мне причине), как это было с моей установкой scipy.

Это теперь заговоры, используя virtualenv.

$ lsb_release -a (gives..)

Ubuntu 14.04.5 LTS

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