Фреймворк 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

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

Если вы столкнулись с той же проблемой, даже после добавления "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.

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