Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不能;导入matplotlib.pyplot作为plt“;虚拟的_Python_Macos_Matplotlib_Flask_Virtualenv - Fatal编程技术网

Python 不能;导入matplotlib.pyplot作为plt“;虚拟的

Python 不能;导入matplotlib.pyplot作为plt“;虚拟的,python,macos,matplotlib,flask,virtualenv,Python,Macos,Matplotlib,Flask,Virtualenv,我正在虚拟环境中使用flask。我可以用pip安装matplotlib,并且可以在Python会话中导入matplotlib。但是,当我将其作为 matplotlib.pyplot as plt 我得到以下错误: >>> import matplotlib.pyplot as plt Traceback (most recent call last): File "<stdin>", line 1, in <module> File "//a

我正在虚拟环境中使用flask。我可以用pip安装matplotlib,并且可以在Python会话中导入matplotlib。但是,当我将其作为

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.
>>将matplotlib.pyplot作为plt导入
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“//anaconda/envs/myenv/lib/python2.7/site packages/matplotlib/pyplot.py”,第109行,在
_后端模块、新图形管理器、绘图(如果交互式),显示=pylab\u设置()
pylab_设置中的文件“//anaconda/envs/myenv/lib/python2.7/site packages/matplotlib/backends/__init___;.py”,第32行
全局变量(),局部变量(),[backend_name],0)
文件“//anaconda/envs/myenv/lib/python2.7/site packages/matplotlib/backends/backend_macosx.py”,第24行,在
从matplotlib.backends导入_macosx
RuntimeError:Python未作为框架安装。如果Python未作为框架安装,Mac OS X后端将无法正常工作。有关在Mac OS X上安装Python作为框架的更多信息,请参阅Python文档。请重新安装Python作为框架,或者尝试其他后端。

我不明白为什么它要求我安装Python作为框架。它不是已经存在了吗?“将Python作为框架安装”是什么意思?如何安装

我使用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
$ cd ~/.matplotlib
$ nano matplotlibrc

我知道这只是一个解决办法,但它对我来说是一个短期修复。

尽管大多数答案似乎指向修补
激活
脚本以使用系统python,我很难做到这一点,对我来说,一个简单的解决方案——尽管有点棘手——是将matplotlib安装到全局环境中,并使用它而不是virtualenv实例。您可以通过使用--system site packages标志(如
virtualenv--system site packages foo
)创建virtualenv,或者在pip安装时使用通用标志(如
pip install-U matplotlib
),您可以使用后端
Agg


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

我得到了同样的错误,并尝试了乔纳森的答案:


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

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

我运行程序,没有错误,但也没有绘图,我尝试了
后端:Qt4Agg
, 打印出我还没有安装PyQt4

然后我尝试了另一个后端:
后端:TkAgg
,它可以工作

所以也许我们可以尝试不同的后端,有些可以工作,或者安装需要的包,比如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,则只需键入以下内容:

cd path_to_virtual_environment    # assume directory is called env3
env3/bin/pip install matplotlib==1.4.3
$ cd ~/.matplotlib
$ nano matplotlibrc
然后,在其中写入
后端:TkAgg

如果需要更多信息,请转到解决方案链接

如果不想设置
.matplotib/matplotlibrc
配置文件,可以通过在导入
matplotlib
之后和导入
matplotlib.pyplot
之前的运行时设置
'Agg'
后端来避免此问题:

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')
[1]中的
:导入matplotlib
在[2]中:matplotlib.use('Agg')
在[3]中:将matplotlib.pyplot作为plt导入
[4]中:图,ax=plt.子图(1,1)
在[5]中:将numpy作为np导入
在[6]中:x=np.linspace(-1,1.)
In[7]:y=np.sin(x)
[8]中:轴图(x,y)
Out[8]:[]
在[9=]中:fig.savefig('myplot.png')

一个干净简单的解决方案是创建一个内核,将
PYTHONHOME
设置为
VIRTUAL\u ENV
,然后使用系统Python可执行文件(而不是virtualenv中的可执行文件)


如果你想自动创建这样一个内核,你可以使用这个脚本。

非常简单。谢谢!一行代码:
echo“backend:TkAgg”>~/.matplotlib/matplotlibrc
echo”backend:Agg”>~/.matplotlib/matplotlibrc
即使以root用户身份尝试此操作,也不会出现“无此类文件或目录错误”。这个文件应该有某种扩展名吗?(在mac 10.12.3上)matplotlibrc最初缺失。如果找不到,就创建它。文件名应该是什么?你在什么操作系统中这么做?是MacOS。我相信它是10.6。我正在使用macOS high sierra,当我使用TkAgg时,它表明我没有安装tkinter软件包。当我使用Qt4Agg或Qt5Agg时,它表明我没有安装PyQt。如果我使用
brew安装PyQt
安装PyQt,则没有帮助。最后,我必须在virtualenv中安装它,“激活virtualenv,然后
pip安装PyQt5
”。这很有效,谢谢!我喜欢这个答案!对我来说,我有一个matplotlib==2.1.0的Python2.7PyEnv环境和matplotlib==2.1.1的Python3.6环境。我将2.7的matplotlib升级到了2.1.1,问题得到了解决。对我来说也很有效。救了我一天:-)非常感谢!