macosx下的python matplotlib框架?

Posted

技术标签:

【中文标题】macosx下的python matplotlib框架?【英文标题】:python matplotlib framework under macosx? 【发布时间】:2011-05-07 00:46:58 【问题描述】:

我收到此错误:

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

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

【问题讨论】:

您应该仍然使用框架安装。用它来安装 scipy、matplotlib 和 ipython 比较简单。 不同意。由于 Python 用于系统 OSX 实用程序,因此最好不要接触系统安装。这几天Continuum.io的Anaconda/Miniconda在Lin/Mac/Win中安装方式一样,非常值得推荐。 出于这个原因,我将 vagrant 用于我的 python 工作。这样我就可以简单地从一个 debian guest-os 开始,它可以让我免于很多 mac 特定的头痛。 【参考方案1】:

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

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

【讨论】:

对于使用 Fink(python2.7、numpy-py27、matplotlib-py27、ipython-py27)在他的新 mac 上安装所有东西的人,你会推荐什么?我还需要一些我只能在 Fink 上获得的包,它们在 MacPorts 上不存在。 最好在 matplotlib 或 numpy 邮件列表之一上提问:sourceforge.net/mail/?group_id=80706 或 scipy.org/Mailing_Lists 如果你使用pyenv,你也可以安装framework Python,像这样:env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 2.7.12【参考方案2】:

当我切换到 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()

【讨论】:

【参考方案3】:

您可以选择使用Agg 后端,无需额外安装任何东西。只需将backend : Agg 放入~/.matplotlib/matplotlibrc

【讨论】:

【参考方案4】:

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

import matplotlib
matplotlib.use('TkAgg')

在导入matplotlib 的子包或依赖于matplotlib 的第三方包之前必须这样做。

【讨论】:

你能解释为什么TkAgg而不是Agg吗? Jonathan's answer 建议 Agg 是更便携的解决方案。【参考方案5】:

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

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

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

【讨论】:

虽然这对我有用。我注意到,同时使用condapip 安装相同的包会在conda list 中创建很多重复的包。【参考方案6】:

查看Working with Matplotlib on OSX. 的官方常见问题解答,根据您的具体情况,它有多种解决方案。对我有用的是:

第一步:打开终端 第二步:执行conda install python.app安装python.app 第 3 步:使用pythonw 运行 python 脚本,例如pythonw my_script.py

【讨论】:

您能否提供有关第 3 步的更多信息,请@Jonny ***s @Maxibon 如果您想知道使用pythonpythonw 之间的区别,请查看最受好评的答案here。我承认我不知道为什么这一系列步骤对我有用。【参考方案7】:

如果您在~/.matplotlib/matplotlibrc 中添加"backend: TkAgg" 后仍面临同样的问题,则可能是您的虚拟环境存在问题。

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

要在 python3 中使用 venv,请使用 python -m venv my-virtualenv 创建虚拟环境并使用 source my-virtualenv/bin/activate 激活 virtualenv。

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

【讨论】:

【参考方案8】:

一般来说,我一直在使用

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

【讨论】:

【参考方案9】:

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

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

【讨论】:

【参考方案10】:

只需在 ~/.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/等。

【讨论】:

【参考方案11】:

我正在运行 OSX 10.14 和 Python 3.7.1,并安装了 pyenv。

我无法让其他答案中列出的任何backends 为我工作(TkAggWXAggmacosx)。

取而代之的是更新的Qt5Agg 后端,与pip install pyqt5 一起安装,然后创建一个包含backend: Qt5Agg~/.matplotlib/matplotlibrc 文件(根据其他答案)。

【讨论】:

唷——这成功了!在 OSX 10.14 上使用 pyenv 运行 Python 3.6.6 - 我无法让任何其他后端工作。

以上是关于macosx下的python matplotlib框架?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上为 Python 2.7 使用 matplotlib

在 Mac OS X 10.12.5 中将 matplotlib.pyplot 导入为 plt 错误

Python使用matplotlib做出的图,怎么输出高清的图像

Python Matplotlib模块--pylab

python安装numpyscipy和matplotlib等whl包的方法

windows环境下,用python绘图库matplotlib绘图时中文乱码问题