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使用random和tertools模块解一些经典概率问题
Jan 28 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
python的faker库用法
Nov 28 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
Python OpenCV 图像平移的实现示例
Jun 04 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文件上传主要代码讲解
2013/09/30 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
医院护士的求职信
2014/01/03 职场文书
标准自荐信范文
2014/01/29 职场文书
志愿者服务感言
2014/02/27 职场文书
计算机专业职业规划
2014/02/28 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
腾讯广告词
2014/03/19 职场文书
音乐学专业求职信
2014/07/22 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2014年档案室工作总结
2014/12/01 职场文书
遗失证明范文
2015/06/19 职场文书
好人好事新闻稿
2015/07/17 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers