详解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正则分析nginx的访问日志
Jan 17 Python
python中实现k-means聚类算法详解
Nov 11 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python如何在DataFrame增加数值
Feb 14 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
Python验证码截取识别代码实例
May 16 Python
python语言是免费还是收费的?
Jun 15 Python
降低python版本的操作方法
Sep 11 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python调用自定义函数的实例操作
2019/06/26 Python
简单了解python变量的作用域
2019/07/30 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
电子商务专业自我鉴定
2013/12/18 职场文书
《童年》教学反思
2014/02/18 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
个人合作协议范本
2015/08/06 职场文书