详解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编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
django中SMTP发送邮件配置详解
Jul 19 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
python 生成器和迭代器的原理解析
Oct 12 Python
python实现画循环圆
Nov 23 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
Dec 25 Python
Python预测2020高考分数和录取情况
Jul 08 Python
利用Pycharm连接服务器的全过程记录
Jul 01 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
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
python常见排序算法基础教程
2017/04/13 Python
pandas带有重复索引操作方法
2018/06/08 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python读取图片任意范围区域
2019/01/23 Python
python3中property使用方法详解
2019/04/23 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
12月红领巾广播稿
2014/02/13 职场文书
致800米运动员广播稿
2014/02/16 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
新闻通讯稿模板
2015/07/22 职场文书
小学语文教师研修日志
2015/11/13 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js