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 上其他框架的文件布局,其中产品的所有组件目录(include
、lib
、bin
)都安装为主目录下的子目录框架目录。 Fink
项目使用 Unix 共享库方法安装 Python。大多数其他发行商,包括 Apple 提供的 OS X 中的 Python、python.org
安装程序和MacPorts
项目,都安装了framework
版本的 Python。框架安装的优点之一是它可以与需要窗口管理器连接(通常是与 GUI 相关的接口)的各种 OS X API 调用一起正常工作,因为 Python 解释器被打包为框架内的应用程序包。
如果您确实需要 matplotlib 中需要 GUI 函数的函数,最简单的方法可能是切换到 MacPorts,它还打包了 matplotlib (port py27-matplotlib
) 及其依赖项。如果是这样,请注意不要在Fink
和MacPorts
之间混用包。除非您非常小心,否则最好坚持使用其中一种。相应地调整你的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。
【讨论】:
虽然这对我有用。我注意到,同时使用conda
和pip
安装相同的包会在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 如果您想知道使用python
和pythonw
之间的区别,请查看最受好评的答案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 为我工作(TkAgg
、WXAgg
、macosx
)。
取而代之的是更新的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做出的图,怎么输出高清的图像