当前位置: 首页 > 面试题库 >

Mac OS Pycharm上的Python通过“将matplotlib.pyplot导入为plt”给出框架错误

公冶才
2023-03-14
问题内容

这个问题与此处和此处的问题相似,但是那里的所有解决方案均无效,这可能是因为我使用的是不同的环境(在Mac OS上为PyCharm)。

在PyCharm在2.7.15上运行的虚拟环境中,无任何投诉地安装了matplotlib,以及一个包含以下内容的单行PyCharm python文件…

import matplotlib.pyplot as plt

…运行单行文件时,控制台输出以下错误:

/Users/jbs/PycharmProjects/WakeUp/env/bin/python /Users/jbs/PycharmProjects/WakeUp/InputSound/WakeInputSound-and-plot-it-trial3.py
Traceback (most recent call last):
  File "/Users/jbs/PycharmProjects/WakeUp/InputSound/WakeInputSound-and-plot-it-trial3.py", line 2, in <module>
    import matplotlib.pyplot as plt
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
[backend_name], 0)
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 17, 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.

解决该问题的任何帮助将受到欢迎。我已经尝试了十几种方法,但似乎都没有效果…

(进口matplotlib本身并不产生问题,这问题可能与这一个,但it’s显然是不同的…)


问题答案:

有关详细信息,请参阅:什么是后端。您需要设置后端。后端有两种类型:用户界面后端(用于pygtk,wxpython,tkinter,qt4或macosx;也称为“交互式后端”)和用于制作图像文件的硬拷贝后端(PNG,SVG,PDF,PS;也称为“非交互式后端”)。

有四种配置后端的方法。如果它们彼此冲突,将使用下面列表中最后提到的方法,例如,调用use()将覆盖matplotlibrc中的设置。

  1. matplotlibrc文件中的backend参数(请参阅自定义matplotlib):

    backend : WXAgg   # use wxpython with antigrain (agg) rendering
    
  2. 为您当前的shell或单个脚本设置MPLBACKEND环境变量:

    > export MPLBACKEND="module://my_backend"
    

    python simple_plot.py

    MPLBACKEND=”module://my_backend” python simple_plot.py

设置此环境变量将覆盖任何matplotlibrc中的backend参数,即使当前工作目录中存在matplotlibrc。因此,不建议在例如.bashrc或.profile中全局设置MPLBACKEND,因为这可能会导致违反直觉的行为。

  1. 要为单个脚本设置后端,您也可以使用-d命令行参数:
    > python script.py -dbackend
    

不建议使用此方法,因为-d参数可能与解析命令行参数的脚本冲突(请参见问题#1986)。您应该改用MPLBACKEND。

  1. 如果您的脚本依赖于特定的后端,则可以使用use()函数
    import matplotlib
    

    matplotlib.use(‘PS’) # generate postscript output by default

如果使用use()函数,则必须在导入matplotlib.pyplot之前完成此操作。导入pyplot后调用use()将无效。如果用户要使用其他后端,则使用use()将需要更改代码。因此,除非绝对必要,否则应避免显式调用use()。

注意:后端名称规范不区分大小写; 例如,“ GTKAgg”和“ gtkagg”是等效的。



 类似资料:
  • 问题内容: 我在Windows 8中将pycharm用于python。我已经安装了matplotlib软件包。我在 导入matplotlib 时使用的是python 2.7,没有错误。 但是,如果我将 matplotlib.pyplot做为plt, 则会出现以下错误: 谁能帮我弄清楚我在做什么错? 问题答案: http://matplotlib.org/users/installing.html#

  • 问题内容: 我正在虚拟环境中使用烧瓶。我可以通过pip安装matplotlib,并且可以在Python会话中进行安装。但是,当我将其导入为 我收到以下错误: 我对为什么它要求我将Python安装为框架感到困惑。它不存在吗?“将Python作为框架安装”是什么意思,如何安装? 问题答案: 这个解决方案对我有用。如果你已经在虚拟环境中使用pip安装了matplotlib,则只需键入以下内容: 然后在那

  • 这是django框架中的python代码。我已经成功安装了django,但我不知道为什么会出现错误。 事实上,我刚开始与django合作,所以请看一下故障。 这可能是因为它无法访问URL和contrib目录。请帮忙,谢谢 .

  • 我试图在ProductFeature表中插入product对象。但我做不到。如何在下面的impex标题中插入值?

  • 问题内容: 假设我有一个数据库…。是否可以通过PHP将数据库中的内容导出到CSV文件(和文本文件,如果可能)? 问题答案: 我个人使用此功能从任何数组创建CSV内容。 然后,您可以使用户使用以下方式下载该文件: 用法示例:

  • 问题内容: 我将swift框架导入到Objective-C项目中,如下所示: 问题在于我正在导入框架的类只能识别某些类。 被认可的课程: 该类不是: 它们都是公开的,那么为什么第一个在工作空间中被识别,而另一个却没有? 我也在头文件MyFramework-Swift.h中看到一个类 出现而其他不出现 这是为什么? 另外要指出的是,当我将swift框架导入swift项目时,该相同的程序也可以工作 问