62

我收到此错误:

/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235:用户警告:Python 未作为框架安装。如果 Python 未作为框架安装,MacOSX 后端可能无法正常工作。有关在 Mac OS X 上将 Python 作为框架安装的更多信息,请参阅 Python 文档

我使用 fink 安装了 python27,它使用默认的 matplotlib 正在使用 macosx 框架。

4

11 回答 11

65

一些用户可能不想更改所有脚本的后端。这个页面——http: //matplotlib.org/faq/usage_faq.html#what-is-a-backend——告诉了另一种方式:

import matplotlib
matplotlib.use('TkAgg')

您必须在导入matplotlib依赖于matplotlib.

于 2016-01-04T02:32:17.010 回答
31

或者,您可以使用Agg不需要额外安装任何东西的后端。只需backend : Agg放入~/.matplotlib/matplotlibrc

于 2015-11-23T14:45:15.813 回答
18

有两种方法可以在 Mac OS X 上构建和安装 Python。一种是作为传统的平面 Unix-y 共享库。另一种称为framework安装,一种类似于 OS X 上其他框架的文件布局,其中产品的所有组件目录 ( include, lib, bin) 都作为子目录安装在主框架目录下。该Fink项目使用 Unix 共享库方法安装 Python。大多数其他发行商,包括 Apple 提供的 OS X 中的 Python、python.org安装程序和MacPorts项目,都安装frameworkPython 的版本。框架安装的优点之一是它可以与需要窗口管理器连接(通常是与 GUI 相关的接口)的各种 OS X API 调用一起正常工作,因为 Python 解释器被打包为框架内的应用程序包。

如果您确实需要 matplotlib 中需要 GUI 函数的函数,最简单的方法可能是切换到 MacPorts,它还打包了 matplotlib ( port py27-matplotlib) 及其依赖项。如果是这样,请注意不要在Fink和之间混合包MacPorts。除非您非常小心,否则最好坚持使用其中一种。相应地调整你的shell路径;删除所有 Fink 软件包并安装 MacPorts 版本是最安全的。

于 2010-11-09T08:32:04.973 回答
12

当切换到 OSX 10.10 (Yosemite) 时,这会显示给我。我通过切换到 WXAgg 后端来修复它。

fink install wxpython300-py27
mkdir ~/.matplotlib
echo "backend : WXAgg" >>~/.matplotlib/matplotlibrc

http://matplotlib.org/1.3.0/faq/usage_faq.html#what-is-a-backend

如果在那里找不到 matplotlibrc 文件,请放入 matplotlibrc 并使用以下命令检查位置:

import matplotlib as mpl
mpl.get_configdir()
于 2015-08-08T04:31:19.480 回答
10

我在我的计算机上使用 Python 的 Anaconda 发行版和使用 Python 3.4 的虚拟 conda 环境遇到了这个问题。

在执行“pip install matplotlib”之后,我可以在我的代码中很好地导入 matplotlit,但是当我尝试绘制图像时它会出错。

所以我回到终端并为 Anaconda Python 使用了推荐的 conda 命令(“conda install matplotlib”),问题自行解决了(请记住,这一切都在我使用http上的 conda 命令工具创建的环境中://conda.pydata.org/docs/using/envs.html)。我的系统正在运行 Mac OSX 10.10.5。

于 2016-04-05T22:29:40.980 回答
9

我正在运行 OSX 10.14 和 Python 3.7.1 安装pyenv

我无法让其他答案中列出的任何后端为我工作(TkAgg、、、WXAggmacosx

相反,有效的是较新的Qt5Agg后端,与 一起安装pip install pyqt5,然后创建一个~/.matplotlib/matplotlibrc包含backend: Qt5Agg(根据其他答案)的文件。

于 2018-12-19T13:31:35.857 回答
7

通过以下代码序列导入库对我有用。有了这个不需要创建新文件夹:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
于 2018-09-04T09:58:14.127 回答
2

"backend: TkAgg"如果您在添加它们之后仍然面临同样~/.matplotlib/matplotlibrc的问题,那么您的虚拟环境可能会出现问题。

所以如果你在 python3 上使用venv而不是 virtualenv。

要将 venv 与 python3 一起使用python -m venv my-virtualenv,请使用创建虚拟环境并用于source my-virtualenv/bin/activate激活 virtualenv。

Rest 与 virtualenv 相同。否则 PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install x.x.x,如果您想使用 virtualenv 作为您的虚拟环境,请使用。

于 2018-02-19T16:02:47.910 回答
2

一般来说,我一直在使用

import matplotlib
matplotlib.use('Agg')

解决这个问题。但是最近我在代码库上运行测试时遇到了这个框架错误,我应该只做非常有限的更改。在这种情况下,遵循 matplotlib 的 OSX 文档关于如何设置虚拟环境的建议对我有用:

If you are on Python 3, use venv instead of virtualenv:

python -m venv my-virtualenv
source my-virtualenv/bin/activate

来自:https ://matplotlib.org/faq/osx_framework.html

于 2018-03-19T18:08:58.903 回答
1

查看有关在 OSX 上使用 Matplotlib 的官方常见问题解答。根据您的情况,它有几种解决方案。对我有用的是:

  • 第一步:打开终端
  • 第二步:执行conda install python.app安装python.app
  • 第 3 步:运行 python 脚本,pythonw例如pythonw my_script.py
于 2017-11-06T15:10:24.407 回答
0

只需在 ~/.bash_profile 中为启动 python 的新命令添加别名就可以了。

alias vpython3=/Library/Frameworks/Python.framework/Versions/3.6(替换成自己的python版本)/bin/python3

然后 'source ~/.bash_profile' 并使用 vpython3 启动 python3。

说明:Python 实际上默认安装为 mac 上的框架,但是使用 virtualenv 会将您的 python3 命令链接到创建的虚拟环境下,而不是上面的框架目录(终端中的“which python3”,你会看到)。也许 Matplotlib 必须在 python 框架中找到 bin/include/lib/等。

于 2018-12-07T02:56:03.610 回答