无法在virtualenv中“将matplotlib.pyplot导入为plt”


67

我在虚拟环境中使用烧瓶。我可以通过pip安装matplotlib,并且可以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安装为框架”是什么意思,如何安装?


您在什么操作系统上执行此操作?
查理·帕克

那是MacOS。我相信是10.6。
罗希特(Rohit),2016年

Answers:


161

这个解决方案对我有用。如果您已经在虚拟环境中使用pip安装了matplotlib,则只需键入以下内容:

$ cd ~/.matplotlib
$ nano matplotlibrc

然后backend: TkAgg在那写。如果您需要更多信息,请转到解决方案链接。


好,易于。非常感谢!
Rudresh Ajgaonkar '16

39
echo "backend : TkAgg" > ~/.matplotlib/matplotlibrcecho "backend : Agg" > ~/.matplotlib/matplotlibrc
单线

当我尝试以root用户身份登录时,出现“没有此类文件或目录错误”的信息。该文件应具有某种扩展名吗?(在Mac
10.12.3

最初缺少matplotlibrc。如果找不到,就创建它
Bostone'Bug

文件名应该是什么?
乔丹

30

我遇到了同样的错误,并尝试Jonathan回答:

您可以使用后端Agg来解决此问题

转到User/yourname/.matplotlib打开/创建matplotlibrc并添加以下行backend : Agg,它应该对您有用。

我运行了程序,没有错误,但是也没有绘图,并且尝试了backend: Qt4Agg,结果显示我没有安装PyQt4。

然后,我尝试了另一个后端:backend: TkAgg,它起作用了!

因此,也许我们可以尝试使用不同的后端,并且某些后端可以工作或安装所需的软件包,例如PyQt4。

这是一个示例python代码段,您可以尝试测试matplotlib。

import matplotlib

matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [0, 3, 7])
plt.show()

我正在使用macOS high sierra,当我使用TkAgg时,它表明我没有安装tkinter软件包。当我使用Qt4Agg或Qt5Agg时,它表明我没有安装PyQt。如果使用来安装PyQt,则无济于事brew install pyqt。最后,我必须将其安装在virtualenv中,然后pip install PyQt5“先激活virtualenv ”。这有效。
nngeek

15

使用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

我知道这只是一个变通办法,但它对我来说是一个短期解决方案。


谢谢!我喜欢这个答案!
韩峰

对我来说,我有一个python 2.7 pyenv环境,其中matplotlib == 2.1.0和python 3.6以及matplotlib == 2.1.1。我将2.7的matplotlib升级到2.1.1,问题已修复。
bajafresh4life

也为我工作。保存了我的一天:-)非常感谢!
ratiaris

8

如果您不想设置.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')

在此处输入图片说明


4

您可以使用后端解决此问题 Agg

转到User/yourname/.matplotlib打开/创建matplotlibrc并添加以下行backend : Agg,它应该对您有用。


0

尽管大多数答案似乎都指向修补activate脚本以使用系统python,但我仍无法正常工作,而对我来说,一个简单的解决方案(尽管有点麻烦)是将matplotlib安装到全局环境中,并使用它代替了virtualenv实例。您可以通过使用--system-site-packages标志创建您的virtualenv来实现virtualenv --system-site-packages foo,或者在pip安装时使用通用标志来实现pip install -U matplotlib


0

一个干净而简单的解决方案是创建一个内核,该内核设置PYTHONHOMEVIRTUAL_ENV然后使用系统Python可执行文件(而不是virtualenv中的一个)。

如果要自动创建这样的内核,可以使用jupyter-virtualenv-osx脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.