Не удалось "импортировать matplotlib.pyplot как 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 как фреймворк" и как его установить?
Ответы
Ответ 1
Это решение работало для меня. Если вы уже установили matplotlib с помощью pip в своей виртуальной среде, вы можете просто ввести следующее:
$ cd ~/.matplotlib
$ nano matplotlibrc
И тогда напишите backend: TkAgg
там.
Если вам нужна дополнительная информация, просто перейдите к ссылке на решение.
Ответ 2
Я получил ту же ошибку и попробовал ответить Jonathan
:
Вы можете исправить эту проблему, используя бэкэнд Agg
Перейдите к User/yourname/.matplotlib
и откройте/создайте matplotlibrc
и добавьте следующую строку backend : Agg
, и она должна работать для вас.
Я запускаю программу, никаких ошибок, но также и никаких графиков, и я попробовал backend: Qt4Agg
,
он печатает, что у меня нет PyQt4.
Затем я попробовал другой бэкэнд: backend: TkAgg
, он работает!
Так что, возможно, мы можем попробовать разницу, а некоторые могут работать или устанавливать требуемые пакеты, такие как PyQt4.
Вот пример фрагмента питона, который вы можете попробовать и проверить matplotlib.
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [0, 3, 7])
plt.show()
Ответ 3
У меня была аналогичная проблема, когда я использовал 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
Я знаю, что это только работа, но это работало для меня как краткосрочное решение.
Ответ 4
Если вы не хотите устанавливать конфигурационный файл .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')
![введите описание изображения здесь]()
Ответ 5
Вы можете исправить эту проблему, используя бэкэнд Agg
Перейдите к User/yourname/.matplotlib
и откройте/создайте matplotlibrc
и добавьте следующую строку backend : Agg
, и она будет работать для вас.
Ответ 6
Хотя большинство ответов, похоже, указывают на исправление activate
script для использования системного python, у меня возникли проблемы с тем, чтобы это работало, и легкое решение для меня - хотя и немного cringey - должно было установить matplotlib для глобальной среде и использовать это вместо экземпляра virtualenv. Вы можете сделать это, создав свой virtualenv с флагом -system-site-packages, например virtualenv --system-site-packages foo
, или использовать универсальный флаг, когда pip устанавливает, например, pip install -U matplotlib
.
Ответ 7
Чистым и простым решением является создание ядра, которое устанавливает PYTHONHOME
в "VIRTUAL_ENV", а затем использует исполняемый файл системы Python (вместо виртуального).
Если вы хотите автоматизировать создание такого ядра, вы можете использовать jupyter-virtualenv-osx script.