Фреймворк python matplotlib под macosx?
Я получаю эту ошибку:
/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 ответов
Существует два способа сборки и установки Python в Mac OS X. Один из них - это обычная плоская общая библиотека Unix-y. Другой известен как framework
установить, расположение файлов, аналогичное другим фреймворкам на OS X, где все каталоги компонентов (include
, lib
, bin
) для продукта устанавливаются как подкаталоги в основной директории фреймворка. Fink
Проект устанавливает Pythons, используя метод общей библиотеки Unix. Большинство других дистрибьюторов, включая Pythons, поставляемые Apple в OS X, python.org
установщики, и MacPorts
проект, установка framework
версии Python. Одним из преимуществ установки фреймворка является то, что он будет корректно работать с различными вызовами API OS X, которые требуют подключения менеджера окон (как правило, интерфейсы, связанные с GUI), поскольку интерпретатор Python упакован как пакет приложений в рамках фреймворка.
Если вам нужны функции в matplotlib, для которых требуются функции графического интерфейса, простейшим подходом может быть переключение на MacPorts, который также упаковывает matplotlib (port py27-matplotlib
) и его зависимости. Если это так, будьте осторожны, чтобы не смешивать пакеты между Fink
а также MacPorts
, Лучше придерживаться одного или другого, если вы не очень осторожны. Отрегулируйте ваш путь оболочки соответственно; было бы безопаснее удалить все пакеты Fink и установить версии MacPorts.
Некоторые пользователи могут не захотеть менять бэкэнд для всех своих скриптов. На этой странице - http://matplotlib.org/faq/usage_faq.html - рассказывается по-другому:
import matplotlib
matplotlib.use('TkAgg')
Вы должны сделать это перед импортом подпакета matplotlib
или сторонний пакет, который зависит от matplotlib
,
По желанию вы можете использовать Agg
бэкэнд, который не требует дополнительной установки чего-либо. Просто положи backend : Agg
в ~/.matplotlib/matplotlibrc
Это проявляется для меня при переходе на 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
Если файл matplotlibrc там не найден, поместите matplotlibrc и проверьте местоположение с помощью:
import matplotlib as mpl
mpl.get_configdir()
Я столкнулся с этой проблемой с помощью дистрибутива 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.
Я использую OSX 10.14 с Python 3.7.1, установленным с pyenv.
Я не смог заставить ни один из бэкэндов, перечисленных в других ответах, работать на меня (TkAgg
, WXAgg
, macosx
).
Вместо того, что сработало, тем новее Qt5Agg
бэкэнд, установленный с pip install pyqt5
, а затем создание ~/.matplotlib/matplotlibrc
файл, содержащий backend: Qt5Agg
(по другим ответам).
Импорт библиотеки с помощью следующих кодовых последовательностей работает для меня. При этом не нужно создавать новую папку:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Как правило, я использую
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
Если вы столкнулись с той же проблемой, даже после добавления "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 в качестве виртуальной среды.
Ознакомьтесь с официальным FAQ по работе с Matplotlib на OSX. У него есть несколько решений в зависимости от вашей ситуации. Тот, который работал для меня:
- Шаг 1: Открыть терминал
- Шаг 2: Выполнить
conda install python.app
установить python.app - Шаг 3: Запустите скрипт Python с
pythonw
напримерpythonw my_script.py
Сделайте псевдоним новой командой для запуска python в ~/.bash_profile.
псевдоним vpython3=/ Библиотека / Каркасы /Python.framework/ Версии /3.6(замените на собственную версию Python)/bin/python3
затем 'source ~/.bash_profile' и используйте vpython3 для запуска python3.
Объяснение: Python на самом деле по умолчанию установлен в качестве framework на mac, но использование virtualenv связывает вашу команду python3 в созданной виртуальной среде вместо вышеуказанного каталога framework ('which python3' в терминале, и вы увидите это). Возможно, Matplotlib должен найти bin / include / lib / и т. Д. В среде python.