【问题标题】:matplotlib: RuntimeError: Python is not installed as a frameworkmatplotlib:RuntimeError:Python 未作为框架安装
【发布时间】:2016-04-30 20:44:47
【问题描述】:

这个问题已经在herehere 中提出过。但是,该解决方案并没有解决我的问题。

原来的错误是,当我尝试import matplotlib.pyplot时,我得到了:

Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", 第 114 行,在 _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() 文件 "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/init.py", 第 32 行,在 pylab_setup 中 globals(),locals(),[backend_name],0) 文件 "/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", 第 24 行,在 from matplotlib.backends import _macosx RuntimeError: Python 未作为框架安装。 Mac OS X 后端将无法 如果 Python 未作为框架安装,则可以正常运行。见 Python 文档,了解有关将 Python 安装为 Mac OS X 上的框架。请重新安装 Python 作为框架, 或尝试其他后端之一。如果你正在使用 Matplotlib 在虚拟环境中,请参阅“在虚拟环境中使用 Matplotlib Matplotlib 常见问题解答中的环境”

我按照解决方案添加了一个带有代码的~/.matplotlib/matplotlibrc 文件:backend: TkAgg。这样做之后,我的错误变为:

/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib 正在使用 fc-list 构建字体缓存。这 可能需要一点时间。 warnings.warn('Matplotlib 正在构建字体 使用 fc-list 缓存。这可能需要一点时间。') objc[25120]: Class TKApplication 在两者中都实现了 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk。中的一个 将使用两个。哪一个是未定义的。 objc[25120]:TKMenu 类是 在 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk。中的一个 将使用两个。哪一个是未定义的。 objc [25120]:类 TKContentView 在两者中都实现了 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk。中的一个 将使用两个。哪一个是未定义的。 objc[25120]:TKWindow 类 在 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk。中的一个 将使用两个。哪一个是未定义的。

我不知道如何解决这个问题。我没有使用虚拟机。你可以帮帮我吗?谢谢!

PS:我发现通过添加:

导入 matplotlib
matplotlib.use('TkAgg')

import matplotlib.pyplot 之前,它似乎有效。但是每次添加这两行代码很烦人......有谁知道发生了什么以及我该如何解决它?谢谢!

【问题讨论】:

  • 我和你的情况类似。 (我在Mac OS X上,使用anaconda python,“TkAgg”后端,错误信息是一样的)当我运行脚本时,它就崩溃了。

标签: python macos python-2.7 matplotlib


【解决方案1】:

我在 virtualenv 中运行我的脚本。 Python 版本是 3.5。

添加一行:

backend: TkAgg

在文件中:

~/.matplotlib/matplotlibrc

这解决了问题。

如果您想了解更多关于为什么添加它可以解决问题,您可以阅读customizing matplotlib's backend。而 TkAgg 解决了这个问题,因为它依赖于 Tkinter。

【讨论】:

  • 为我工作 OS 10.13.3 python 3.x
  • 为我工作,3ks
  • 适用于 python 2.7.13、OS 10.13.3
【解决方案2】:

以下对我有用:

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

参考: https://github.com/tensorflow/tensorflow/issues/2375

【讨论】:

  • 这是最近的回答
  • 在这里工作!有人知道为什么这实际上有效吗?此处的链接参考和其他任何地方都没有解释为什么会修复它
【解决方案3】:

我也遇到了同样的错误。我所做的是安装 miniconda 包并使用 pythonw。我的 Mac 中已经安装了 Python 应用程序。安装就像打鸡蛋一样简单。只需 bash 终端中的 .sh 文件即可。

【讨论】:

    【解决方案4】:

    我在 virtualenv 中安装了 Jupyter Notebook,下面为我工作:

    在控制台:

    echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
    pip install matplotlib==2.1.0
    

    在笔记本上:

    import matplotlib
    

    重启内核:

    dataframe.plot.hist()
    ...
    

    在我看来,它会修复错误。

    【讨论】:

      【解决方案5】:

      我在 virtualenv 中的 python 2.7 中遇到了同样的问题,我通过简单地将 matplotlib 降级到版本 2.1.0 来解决这些问题

      【讨论】:

        【解决方案6】:

        我使用的是pyenv,所以matplotlibrc 路径不在主目录中,所以我创建了这个脚本来找出路径并将backend 更改为Tkagg

        vim $(python -c "import os,matplotlib; print(os.path.join(os.path.dirname(matplotlib.__file__), 'mpl-data/matplotlibrc'));")
        

        这个脚本应该适用于你系统上的任何 python。

        【讨论】:

          猜你喜欢
          • 2015-01-23
          • 2015-10-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-27
          • 2013-06-19
          相关资源
          最近更新 更多