我收到此错误:
/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235: UserWarning:Python未作为框架安装。 MacOSX 如果没有安装Python,后端可能无法正常工作 框架。有关更多信息,请参阅Python文档 在Mac OS X上安装Python作为框架
我使用fink安装python27,而使用默认的matplotlib则使用macosx框架。
答案 0 :(得分:60)
有些用户可能不想更改所有脚本的后端。这个页面 - http://matplotlib.org/faq/usage_faq.html#what-is-a-backend - 告诉另一种方式:
import matplotlib
matplotlib.use('TkAgg')
在导入matplotlib
的子包或依赖matplotlib
的第三方包之前,您必须执行此操作。
答案 1 :(得分:16)
有两种方法可以在Mac OS X上构建和安装Python。其中一种方法是作为传统的平面Unix-y共享库。另一个称为framework
安装,类似于OS X上的其他框架的文件布局,其中所有组件目录(include
,lib
,bin
)用于产品安装在主框架目录下的子目录中。 Fink
项目使用Unix共享库方法安装Pythons。大多数其他分销商,包括Apple提供的OS X中的Pythons,python.org
安装程序和MacPorts
项目,都安装了framework
版本的Python。框架安装的一个优点是它可以与需要窗口管理器连接(通常是GUI相关的接口)的各种OS X API调用一起正常工作,因为Python解释器被打包为框架内的应用程序包。
如果你确实需要matplotlib中需要GUI功能的函数,最简单的方法可能是切换到MacPorts,它也包括matplotlib(port py27-matplotlib
)及其依赖项。如果是这样,请注意不要在Fink
和MacPorts
之间混合包。除非你非常小心,否则最好坚持使用其中一个。相应地调整shell路径;删除所有Fink软件包并安装MacPorts版本是最安全的。
答案 2 :(得分:11)
当切换到OSX 10.10(优胜美地)时,这会显示给我。我通过切换到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 :(得分:9)
我在我的计算机上使用Anaconda分发的Python和使用Python 3.4的虚拟conda环境来解决这个问题。
在执行“pip install matplotlib”之后,我可以在我的代码中导入matplotlit,但是当我尝试绘制图像时会出错。
所以我回到终端并使用了推荐的conda命令用于Anaconda Python(“conda install matplotlib”),问题自行解决(请记住,这一切都在我使用conda命令创建的环境中)工具http://conda.pydata.org/docs/using/envs.html)。我的系统正在运行Mac OSX 10.10.5。
答案 4 :(得分:5)
通过以下代码序列导入库对我有用。与此不需要创建新文件夹:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
答案 5 :(得分:5)
我正在运行带有pyenv并安装了Python 3.7.1的OSX 10.14。
我无法获得其他答案(TkAgg
,WXAgg
,macosx
)中列出的backends中的任何一个。
相反,起作用的是较新的Qt5Agg
后端,该后端与pip install pyqt5
一起安装,然后创建一个包含~/.matplotlib/matplotlibrc
的{{1}}文件(其他答案)。
答案 6 :(得分:2)
如果您在"backend: TkAgg"
中添加~/.matplotlib/matplotlibrc
时遇到同样的问题,则可能会导致您的虚拟环境出现问题。
所以如果你在python3上使用venv而不是virtualenv。
要使用带有python3的venv,请使用python -m venv my-virtualenv
创建虚拟环境,并使用source my-virtualenv/bin/activate
激活virtualenv。
休息与virtualenv相同。否则使用
PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install x.x.x
如果您想将virtualenv用作虚拟环境。
答案 7 :(得分: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
答案 8 :(得分:0)
查看Working with Matplotlib on OSX.的官方常见问题解答。根据您的具体情况,它有多种解决方案。对我有用的是:
jsoncpp
安装python.app conda install python.app
运行python脚本,例如pythonw
答案 9 :(得分: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命令,而不是上面的框架目录(终端中的“哪个python3”,您会看到) 。 Matplotlib可能必须在python框架中找到bin / include / lib /等。