Ответ 1
Я запускаю свой скрипт в virtualenv. Версия Python - 3.5.
Добавить строку:
backend: TkAgg
в файле:
~/.matplotlib/matplotlibrc
Это решило проблему.
Этот вопрос задавали и здесь, здесь и здесь. Однако решение не устранило проблему для моего случая.
Первоначальная ошибка, когда я пытаюсь import matplotlib.pyplot
, я получил:
Traceback (последний последний вызов): Файл "", строка 1, в файле "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", строка 114, в _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() Файл "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/init.py", строка 32, в pylab_setup globals(), locals(), [backend_name ], 0) Файл "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", строка 24, из matplotlib.backends import _macosx RuntimeError: Python не установлен как фреймворк. Бэкэнд Mac OS X не сможет нормально функционировать, если Python не установлен как фреймворк. Дополнительную информацию об установке Python в качестве платформы в Mac OS X см. В документации Python. Пожалуйста, переустановите Python как фреймворк или попробуйте один из других бэкэндов. Если вы работаете с Matplotlib в виртуальной среде, см. "Работа с Matplotlib в виртуальных средах" в FAQ Matplotlib
Я следил за решениями, чтобы добавить файл ~/.matplotlib/matplotlibrc
с кодом: backend: TkAgg
. После этого моя ошибка изменилась на:
/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib создает кеш шрифтов с помощью fc-list. Это может занять некоторое время. warnings.warn('Matplotlib строит кеш шрифтов, используя fc-list. Это может занять некоторое время.') objc [25120]: Class TKApplication реализуется как в /Users/XX/anaconda/lib/libtk8.5.dylib, так и в /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Один из двух будет использован. Какой из них не определен. objc [25120]: класс TKMenu реализован как в /Users/XX/anaconda/lib/libtk8.5.dylib, так и в /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Один из двух будет использован. Какой из них не определен. objc [25120]: класс TKContentView реализован как в /Users/XX/anaconda/lib/libtk8.5.dylib, так и в /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Один из двух будет использован. Какой из них не определен. objc [25120]: класс TKWindow реализован как в /Users/XX/anaconda/lib/libtk8.5.dylib, так и в /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Один из двух будет использован. Какой из них не определен.
Я не знаю, как это исправить. Я не использую виртуальную машину. Не могли бы вы помочь мне? Спасибо!
PS: Я узнал, что добавив:
import matplotlib
matplotlib.use( '') TkAgg
перед import matplotlib.pyplot
, похоже, работает. Но добавлять эти две строки кодов каждый раз раздражает... Кто-нибудь знает, что происходит и как я могу это исправить? Спасибо!
Я запускаю свой скрипт в virtualenv. Версия Python - 3.5.
Добавить строку:
backend: TkAgg
в файле:
~/.matplotlib/matplotlibrc
Это решило проблему.
Ниже работал для меня:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Ссылка: https://github.com/tensorflow/tensorflow/issues/2375
У меня также была такая же ошибка. То, что я сделал, это установить пакеты miniconda и использовать pythonw. Приложение Python уже было установлено на моем Mac. Установка так же просто, как разбить яйцо. Просто напишите файл.sh в терминале.
Я установил Jupyter Notebook в virtualenv и ниже работал для меня:
На консоли:
echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
pip install matplotlib==2.1.0
На ноутбуке:
import matplotlib
Перезапустить ядро:
dataframe.plot.hist()
...
По моему мнению, он исправит ошибку.
У меня были те же проблемы в python 2.7 в virtualenv, и мне удалось исправить их, просто понизив matplotlib до версии 2.1.0