фреймворк python matplotlib под macosx? - PullRequest
58 голосов
/ 09 ноября 2010

Я получаю эту ошибку:

/ sw / lib / python2.7 / site-packages / matplotlib / backends / backend_macosx.py: 235: UserWarning: Python не устанавливается как инфраструктура,Бэкэнд MacOSX может работать некорректно, если Python не установлен как фреймворк.Пожалуйста, обратитесь к документации по Python для получения дополнительной информации об установке Python в качестве платформы на Mac OS X

Я установил python27 с помощью fink, и он использует стандартную matplotlib, использующую инфраструктуру macosx.

Ответы [ 11 ]

60 голосов
/ 04 января 2016

Некоторые пользователи могут не захотеть менять бэкэнд для всех своих скриптов.Эта страница - http://matplotlib.org/faq/usage_faq.html#what-is-a-backend - говорит по-другому:

import matplotlib
matplotlib.use('TkAgg')

Это необходимо сделать перед импортом подпакета matplotlib или стороннего пакета, который зависит от matplotlib.

29 голосов
/ 23 ноября 2015

При желании вы можете использовать Agg бэкэнд, который не требует дополнительной установки чего-либо. Просто положите backend : Agg в ~/.matplotlib/matplotlibrc

16 голосов
/ 09 ноября 2010

Существует два способа сборки и установки Python в Mac OS X. Один из них - это обычная плоская общая библиотека Unix-y. Другой известен как framework установка, формат файла, подобный другим структурам на OS X, где все каталоги компонентов (include, lib, bin) для продукта установлены как подкаталоги под главной рамочный каталог. Проект Fink устанавливает Pythons с использованием метода общей библиотеки Unix. Большинство других распространителей, в том числе поставляемые Apple Pythons в OS X, установщики python.org и проект MacPorts, устанавливают framework версии Python. Одним из преимуществ установки фреймворка является то, что он будет корректно работать с различными вызовами API OS X, которые требуют подключения менеджера окон (обычно интерфейсы, связанные с GUI), потому что интерпретатор Python упакован как пакет приложения в рамках фреймворка.

Если вам нужны функции в matplotlib, для которых требуются функции графического интерфейса, простейшим подходом может быть переключение на MacPorts, который также упаковывает matplotlib (port py27-matplotlib) и его зависимости. Если это так, будьте осторожны, чтобы не перепутать пакеты между Fink и MacPorts. Лучше придерживаться одного или другого, если вы не очень осторожны. Отрегулируйте ваш путь оболочки соответственно; было бы безопаснее удалить все пакеты Fink и установить версии MacPorts.

11 голосов
/ 08 августа 2015

Это отображается для меня при переходе на OSX 10.10 (Yosemite).Я исправил это, переключившись на бэкэнд WXAgg.

fink install wxpython300-py27
mkdir ~/.matplotlib
echo "backend : WXAgg" >>~/.matplotlib/matplotlibrc

http://matplotlib.org/1.3.0/faq/usage_faq.html#what-is-a-backend

Если файл matplotlibrc там не найден, поместите matplotlibrc и проверьте местоположение с помощью:

import matplotlib as mpl
mpl.get_configdir()
9 голосов
/ 06 апреля 2016

Я столкнулся с этой проблемой, используя дистрибутив Python Anaconda на моем компьютере и виртуальную среду conda с Python 3.4.

После выполнения команды "pip install matplotlib" я мог нормально импортировать matplotlit в свой код, но при попытке построить изображение это выдает ошибку.

Поэтому я вернулся в Терминал и использовал рекомендованную команду conda для Anaconda Python («conda install matplotlib»), и проблема решилась сама собой (имейте в виду, что все это было в среде, которую я создал с помощьюинструмент управления conda на http://conda.pydata.org/docs/using/envs.html). Моя система работает под управлением Mac OSX 10.10.5.

6 голосов
/ 19 декабря 2018

Я использую OSX 10.14 с Python 3.7.1, установленным с pyenv .

Я не смог получить ни одного из бэкэндов , перечисленных в других ответах наработать для меня (TkAgg, WXAgg, macosx).

Вместо этого работал более новый Qt5Agg бэкэнд, установленный с pip install pyqt5, а затем создание ~/.matplotlib/matplotlibrc файла, содержащего backend: Qt5Agg (по другим ответам).

5 голосов
/ 04 сентября 2018

Импорт библиотеки по следующим кодовым последовательностям работает для меня.При этом не нужно создавать новую папку:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
2 голосов
/ 19 марта 2018

Обычно я использую

import matplotlib
matplotlib.use('Agg')

чтобы решить это. Однако недавно я получил эту ошибку среды при выполнении тестов на базе кода, в которую я должен вносить только очень ограниченные изменения. В этом случае, следуя советам документации OSX matplotlib о том, как я настраивал свою виртуальную среду, работали для меня:

If you are on Python 3, use venv instead of virtualenv:

python -m venv my-virtualenv
source my-virtualenv/bin/activate

от: https://matplotlib.org/faq/osx_framework.html

2 голосов
/ 19 февраля 2018

Если вы столкнулись с той же проблемой даже после добавления "backend: TkAgg" в ~/.matplotlib/matplotlibrc, возможно, это проблема вашей виртуальной среды.

Так что, если вы используете Python3, используйте venv вместо virtualenv.

Чтобы использовать venv с python3, используйте python -m venv my-virtualenv для создания виртуальной среды и source my-virtualenv/bin/activate для активации virtualenv.

Отдых - это то же самое, что и virtualenv. В противном случае используйте PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install x.x.x если вы хотите использовать virtualenv в качестве виртуальной среды.

0 голосов
/ 07 декабря 2018

Простой псевдоним новой команды для запуска python в ~ / .bash_profile сделает свое дело.

alias vpython3 = / Library / Frameworks / Python.framework / Versions / 3.6 (замените своей собственной версией python)/ bin / python3

, затем 'source ~ / .bash_profile' и использовать vpython3 для запуска python3.

Объяснение: Python по умолчанию установлен в качестве фреймворка на Mac, но использование virtualenv связывает вашКоманда python3 в созданной виртуальной среде вместо вышеуказанной директории фреймворка («какой python3» в терминале, и вы увидите это).Возможно, Matplotlib должен найти bin / include / lib / и т. Д. В среде python.

...