详解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基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
如何将python中的List转化成dictionary
Aug 15 Python
Python引用传值概念与用法实例小结
Oct 07 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Python3解释器知识点总结
Feb 19 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
pandas 对日期类型数据的处理方法详解
Aug 08 Python
利用python实现冒泡排序算法实例代码
Dec 01 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python实战之实现康威生命游戏
Apr 26 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中实现进程间通讯
2006/10/09 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
争先创优演讲稿
2014/09/15 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
如何基于python实现单目三维重建详解
2022/06/25 Python