详解pyenv下使用python matplotlib模块的问题解决


Posted in Python onNovember 29, 2018

先来描述一下我遇到的问题,在进行matplotlib学习时, plot.show() 总是无法成功运行,总是会报一个错:

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.

其实意思很简单,就是我用的python并不是一个作为系统框架存在的,因为我为了方便管理python的版本,选择了 pyenv 这个管理工具,是一个独立出来的python环境。

尝试解决无果

参考网上众多的解决方法,例如以下两个最常见的:

方法一: 添加如下两行 代码解决:

>>> import matplotlib
>>> matplotlib.use('TkAgg')
##在import matplotlib下的模块,如pyplot等之前添加上面2句
>>> import matplotlib.pyplot as plt

方法二: 添加一下matplotlib的配置:

echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

然而,以上这两种解决方式都***无法解决我的问题***,此时出现了第二个错误:

No module named '_tkinter'

说是找不到 tkinter 这个模块,找了网上大多数方法,全都是linux系统下的解决方案,我真的很好奇没有一个使用mac的用户出现我这样的问题吗? 究其原因,是因为,使用 pyenv 独立安装出来的python中并没有 tkinter 这个模块,于是尝试直接安装 tkinter ,结果竟然提示没有发现 tkinter 包!

pip3 install tkinter
Collecting tkinter
Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter

来到这,我不禁陷入了深深的思考,这个 tkinter 到底是何方神圣,去了Python社区:https://docs.python.org/3/library/tkinter.html ,这才懂了他是啥玩意:

The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and  tkinter are available on most Unix platforms, as well as on Windows systems. (Tk itself is not part of Python; it is maintained at ActiveState.) Running  python -m tkinter from the command line should open a window demonstrating a simple Tk interface, letting you know that  tkinter is properly installed on your system, and also showing what version of Tcl/Tk is installed, so you can read the Tcl/Tk documentation specific to that version.

说白了, tkinter 就是一个利用python做GUI(图形用户界面),它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。

那么究竟去哪安装这个 tkinter 包,说实话到现在我也不知道如何利用 pyenv 去安装 tkinter ,那这个问题又该怎么解决呢?

曲线救国

既然 tkinter 这个GUI库没用,那换个库是不是就好了呢?结果的确和我想的一样,在我换了一个GUI库之后,他的确成功了。 具体操作如下: 在出现 Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. 这个错误的时候,在终端输入以下命令:

echo "backend : Qt5Agg" > ~/.matplotlib/matplotlibrc

如果提示你没有安装 PyQt 的话,你就需要执行

brew install pyqt

然后在执行

pip install PyQt5

这时候在运行你的代码就可以了。

详解pyenv下使用python matplotlib模块的问题解决

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python生成pdf文件的方法
Aug 04 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
python面试题之列表声明实例分析
Jul 08 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
彻底解决Python包下载慢问题
Nov 15 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 #Python
selenium+python设置爬虫代理IP的方法
Nov 29 #Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 #Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 #Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 #Python
使用python判断你是青少年还是老年人
Nov 29 #Python
pycham查看程序执行的时间方法
Nov 29 #Python
You might like
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
python使用scrapy解析js示例
2014/01/23 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python中os.remove()用法及注意事项
2021/01/31 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
C++程序员求职信范文
2014/04/14 职场文书
六一儿童节活动总结
2014/08/27 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers