我收到此错误:
/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235:用户警告:Python 未作为框架安装。如果 Python 未作为框架安装,MacOSX 后端可能无法正常工作。有关在 Mac OS X 上将 Python 作为框架安装的更多信息,请参阅 Python 文档
我使用 fink 安装了 python27,它使用默认的 matplotlib 正在使用 macosx 框架。
我收到此错误:
/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235:用户警告:Python 未作为框架安装。如果 Python 未作为框架安装,MacOSX 后端可能无法正常工作。有关在 Mac OS X 上将 Python 作为框架安装的更多信息,请参阅 Python 文档
我使用 fink 安装了 python27,它使用默认的 matplotlib 正在使用 macosx 框架。
一些用户可能不想更改所有脚本的后端。这个页面——http: //matplotlib.org/faq/usage_faq.html#what-is-a-backend——告诉了另一种方式:
import matplotlib
matplotlib.use('TkAgg')
您必须在导入matplotlib
依赖于matplotlib
.
或者,您可以使用Agg
不需要额外安装任何东西的后端。只需backend : Agg
放入~/.matplotlib/matplotlibrc
有两种方法可以在 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 版本是最安全的。
当切换到 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()
我在我的计算机上使用 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。
通过以下代码序列导入库对我有用。有了这个不需要创建新文件夹:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
"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 作为您的虚拟环境,请使用。
一般来说,我一直在使用
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
查看有关在 OSX 上使用 Matplotlib 的官方常见问题解答。根据您的情况,它有几种解决方案。对我有用的是:
conda install python.app
安装python.app pythonw
例如pythonw my_script.py
只需在 ~/.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/等。