Невозможно " импортировать matplotlib.pyplot as plt " в virtualenv
Я работаю с колбой в виртуальной среде. Я смог установить matplotlib с pip, и я могу import matplotlib
в сеансе Python. Однако, когда я импортирую его как
matplotlib.pyplot as plt
Я получаю следующую ошибку:
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
globals(),locals(),[backend_name],0)
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 24, in <module>
from matplotlib.backends import _macosx
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends.
Я смущен тем, почему он просит меня установить Python в качестве фреймворка. Уже не существует? Что значит "установить Python как фреймворк" и как его установить?
7 ответов:
этой решение работал для меня. Если вы уже установили matplotlib с помощью pip в своей виртуальной среде, вы можете просто ввести следующее:
$ cd ~/.matplotlib $ nano matplotlibrc
а потом, пиши
backend: TkAgg
там. Если вам нужна дополнительная информация, просто перейдите по ссылке решение.
я получил ту же ошибку, и попытался
Jonathan
'ы ответ:вы можете исправить эту проблему с помощью backend Agg
на
User/yourname/.matplotlib
и открыть/создатьmatplotlibrc
и добавить следующую строкуbackend : Agg
и это должно работать для вас.я запускаю программу, без ошибок, но и без сюжетов, и я попробовал
backend: Qt4Agg
, он печатает, что у меня не установлен PyQt4.затем я попробовал другой бэкэнд:
backend: TkAgg
, это работает!так может быть, мы можем попробовать разницу backends и некоторые из них могут работать или устанавливать requeired пакеты, такие как PyQt4.
вот пример фрагмента python, который вы можете попробовать и проверить matplotlib.
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt plt.plot([1, 2, 3], [0, 3, 7]) plt.show()
У меня была аналогичная проблема, когда я использовал pip для установки matplotlib. По умолчанию он установил последнюю версию, которая была 1.5.0. Однако у меня была другая виртуальная среда с Python 3.4 и matplotlib 1.4.3, и эта среда отлично работала, когда я импортировал matplotlib.pyplot. Поэтому я установил более раннюю версию matplotlib, используя следующее:
cd path_to_virtual_environment # assume directory is called env3 env3/bin/pip install matplotlib==1.4.3
Я знаю, что это только работа вокруг, но это сработало для меня как краткосрочное исправление.
если вы не хотите устанавливать
.matplotib/matplotlibrc
файл конфигурации, вы можете обойти эту проблему, установив'Agg'
бэкэнд во время выполнения сразу после импортаmatplotlib
и перед импортомmatplotlib.pyplot
:In [1]: import matplotlib In [2]: matplotlib.use('Agg') In [3]: import matplotlib.pyplot as plt In [4]: fig, ax = plt.subplots(1, 1) In [5]: import numpy as np In [6]: x = np.linspace(-1., 1.) In [7]: y = np.sin(x) In [8]: ax.plot(x, y) Out[8]: [<matplotlib.lines.Line2D at 0x1057ecf10>] In [9=]: fig.savefig('myplot.png')
вы можете исправить эту проблему с помощью backend
Agg
на
User/yourname/.matplotlib
и открыть/создатьmatplotlibrc
и добавьте следующую строкуbackend : Agg
и это должно работать для вас.
хотя большинство ответов, кажется, указывают на латание
activate
скрипт для использования системного python, у меня возникли проблемы с получением этого, чтобы работать и простое решение для меня - хотя немного cringey - было установить matplotlib в глобальную среду и использовать его вместо экземпляра virtualenv. Вы можете сделать это либо создав свой virtualenv с флагом --system-site-packages какvirtualenv --system-site-packages foo
, или использовать универсальный флаг при установке pip какpip install -U matplotlib
.
чистым и простым решением является создание ядра, которое устанавливает
PYTHONHOME
доVIRTUAL_ENV
а затем использует системный исполняемый файл Python (вместо того, который находится в virtualenv).Если вы хотите автоматизировать создание такого ядра, вы можете использовать jupyter-virtualenv-osx сценарий.