Python升级提示Tkinter模块找不到的解决方法


Posted in Python onAugust 22, 2014

一、安装tkinter
在Linux中python默认是不安装Tkinter模块,

[root@li250-193 ~]# python

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ImportError: No module named Tkinter

>>>

我们安装Tkinter模块
[root@li250-193 ~]# yum -y install tkinter

...

[root@li250-193 ~]# python

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

>>>

二、升级Python
Linux的Python版本默认都不叫低
查看Python版本
[root@li250-193 ~]# python -V

Python 2.6.6

DOWN新版本
[root@li250-193 ~]# wget http://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz

解压安装
[root@li250-193 ~]# tar -xf Python-2.7.4.tgz 

[root@li250-193 ~]# cd Python-2.7.4

[root@li250-193 Python-2.7.4]# ./configure

...

[root@li250-193 Python-2.7.4]# make

...

[root@li250-193 Python-2.7.4]# make install

...

看看新版本Python是否可以使用Tkinter?
[root@li250-193 Python-2.7.4]# ./python

Python 2.7.4 (default, Apr 12 2013, 08:03:09) 

[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter       

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/root/Python-2.7.4/Lib/lib-tk/Tkinter.py", line 39, in <module>

    import _tkinter # If this fails your Python may not be configured for Tk

ImportError: No module named _tkinter

>>>

提示找不到tkinter模块?看看旧版的是不是正常
[root@li250-193 Python-2.7.4]# python 

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

>>>

旧版的没问题,难道需要yum install tkinter一次?
[root@li250-193 Python-2.7.4]# yum install tkinter

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

 * base: mirror.team-cymru.org

 * extras: mirror.team-cymru.org

 * updates: mirror.team-cymru.org

Setting up Install Process

Package tkinter-2.6.6-36.el6.x86_64 already installed and latest version

Nothing to do

提示已安装,看来不是tkinter的问题,看看tkinter模块在哪里?
[root@li250-193 Python-2.7.4]# find /usr -name *tkinter.so

/usr/lib64/python2.6/lib-dynload/_tkinter.so

找到一个,在2.6旧版本的目录下,估计是因为新版本库指向问题。于是认真读了README说明。重新配置安装
三、正确安装新版Python
首先修改Setup.dist文件
[root@li250-193 Python-2.7.4]# vim Modules/Setup.dist

找到下面这几行,把前面的井号去掉打开它
_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \

-L/usr/local/lib \

-I/usr/local/include \

-ltk8.5 -ltcl8.5 \

-lX11

以上第四行
-ltk8.5 -ltcl8.5 默认是 8.2 ,请你系统实际tcl/tk版本修改
[root@li250-193 Python-2.7.4]# rpm -qa | grep ^tk

tk-8.5.7-5.el6.x86_64

tkinter-2.6.6-36.el6.x86_64

[root@li250-193 Python-2.7.4]# rpm -qa | grep ^tcl

tcl-8.5.7-6.el6.x86_64

我系统中装的是8.5,所以这里我改成了8.5
保存退出
安装tck-devel、tk-devel
[root@li250-193 Python-2.7.4]# yum -y install tcl-devel tk-devel

开始配置安装
[root@li250-193 Python-2.7.4]# ldconfig

[root@li250-193 Python-2.7.4]# ./configure

...

[root@li250-193 Python-2.7.4]# make

...

[root@li250-193 Python-2.7.4]# make install

...

看下新版Python是否可以使用tkinter模块
[root@li250-193 Python-2.7.4]# ./python

Python 2.7.4 (default, Apr 12 2013, 08:49:11) 

[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

>>>

已经没问题,旧版再看看
[root@li250-193 Python-2.7.4]# /usr/bin/python2.6

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

>>>

也没问题
如果直接敲入python -V查看版本是不是最新的,如果不是可以这么干:
which出python命令路径
[root@li250-193 Python-2.7.4]# which python

/usr/local/bin/python

cp 过去
[root@li250-193 Python-2.7.4]# cp python /usr/local/bin/python

四、升级Python引起yum版本无法使用的问题解决
不少童鞋安装后就
cp python /usr/bin/python

导致yum时就提示
[root@lee ~]# yum

There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:

 

   No module named yum

 

Please install a package which provides this module, or

verify that the module is installed correctly.

 

It's possible that the above module doesn't match the

current version of Python, which is:

2.7.4 (default, Apr  9 2013, 17:12:56) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

 

If you cannot solve this problem yourself, please go to 

the yum faq at:

  http://yum.baseurl.org/wiki/Faq

   

 

[root@lee ~]#

因为yum头部默认制定python脚本的路径就是
#! /usr/bin/python

你把旧版的python替换后就是用不了,不知道为何新版Python不能被yum识别,目前唯一最好解决的方法就是修改yum头部声明
改成
#! /usr/bin/python2.6

即可,这里的python2.6是我centos默认版本,大家的默认版本是多少请按实际情况修改即可
Python 相关文章推荐
布同自制Python函数帮助查询小工具
Mar 13 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python中with及contextlib的用法详解
Jun 08 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
python实现简单图书管理系统
Nov 22 Python
django ORM之values和annotate使用详解
May 19 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
Aug 05 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 Python
Python实现多行注释的另类方法
Aug 22 #Python
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 #Python
Python发送Email方法实例
Aug 21 #Python
Python生成验证码实例
Aug 21 #Python
python中去空格函数的用法
Aug 21 #Python
python实现的重启关机程序实例
Aug 21 #Python
实例讲解Python中的私有属性
Aug 21 #Python
You might like
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
python引用DLL文件的方法
2015/05/11 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
python进行TCP端口扫描的实现
2018/12/21 Python
pycharm配置git(图文教程)
2019/08/16 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
P/Invoke是什么
2015/07/31 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
商家认证委托书格式
2014/10/16 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
大国崛起日本观后感
2015/06/02 职场文书
欢送领导祝酒词
2015/08/12 职场文书
angular4实现带搜索的下拉框
2022/03/25 Javascript
Java中的继承、多态以及封装
2022/04/11 Java/Android