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 играть хорошо, и я, кажется, сталкиваюсь с проблемами при каждом повороте. Поэтому вместо того, чтобы продолжать метод проб и ошибок, я хочу спросить:
- Каков наилучший вариант для 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 на своем сайте, так что я думаю, что это не так. заканчиваются варианты: /
Какао:
То же самое: написание приложений Какао в 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 работает. Если вы строите все из исходного кода:
- sudo apt-get установить tk-dev
- Перестройте python3 (make clean; ./configure; make)
- Очистить matplotlib (удалить яйцо из virtualenv, удалить объекты кэша из ~/.config/matplotlib)
- Перестроил 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