macOS下的Python Matplotlib框架?

62 投票
11 回答
25586 浏览
提问于 2025-04-16 06:46

我遇到了这个错误:

/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235: 用户警告:Python没有作为框架安装。如果Python没有作为框架安装,MacOSX的后端可能无法正常工作。请查看Python文档,了解如何在Mac OS X上将Python安装为框架。

我通过fink安装了python27,并且默认的matplotlib正在使用macosx框架。

11 个回答

31

你可以选择使用这个后端,它不需要额外安装任何东西。只需在~/.matplotlib/matplotlibrc文件中添加backend : Agg这一行就可以了。

64

有些用户可能不想为他们所有的脚本更改后端设置。这一页 -- http://matplotlib.org/faq/usage_faq.html#what-is-a-backend -- 提供了另一种方法:

import matplotlib
matplotlib.use('TkAgg')

你需要在导入matplotlib的子包或者依赖于matplotlib的第三方包之前,先进行这个操作。

18

在Mac OS X上,有两种方法可以安装和构建Python。一种是传统的Unix共享库方式,另一种叫做framework安装,这种方式的文件结构和OS X上的其他框架类似,所有的组件目录(includelibbin)都作为子目录安装在主框架目录下。Fink项目使用Unix共享库的方法来安装Python。而大多数其他的发行版,包括苹果自带的Python、python.org的安装包和MacPorts项目,都是安装framework版本的Python。framework安装的一个好处是,它能与需要窗口管理器连接的各种OS X API调用正常工作(通常是与图形用户界面相关的接口),因为Python解释器被打包成一个应用程序包,包含在框架内。

如果你需要使用matplotlib中的一些需要图形用户界面功能的函数,最简单的方法可能是切换到MacPorts,因为它也打包了matplotlib(port py27-matplotlib)及其依赖项。如果这样做,要小心不要混合使用FinkMacPorts中的包。最好只选择其中一个,除非你非常小心。相应地调整你的shell路径;最安全的做法是先删除所有的Fink包,然后安装MacPorts版本。

撰写回答