详解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根据出生年份简单计算生肖的方法
Mar 27 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python使用PDFMiner解析PDF代码实例
Mar 27 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
对python:print打印时加u的含义详解
Dec 15 Python
详解python做UI界面的方法
Feb 27 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
laravel入门知识点整理
2020/09/15 PHP
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python文件和目录操作详解
2015/02/08 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
大学生职业规划论文
2014/01/11 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
超市促销活动总结
2014/07/01 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
七年级作文之秋游
2019/10/21 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB