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