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编程时利用wxPython来支持多线程的方法
Apr 07 Python
详解 Python 读写XML文件的实例
Aug 02 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
python之文件读取一行一行的方法
Jul 12 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
详解Python3 基本数据类型
Apr 19 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
Python 合并拼接字符串的方法
Jul 28 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
高中的自我鉴定
2013/12/16 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
中药专业自荐信范文
2014/03/18 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
晚会开幕词
2015/01/28 职场文书
放假通知怎么写
2015/08/18 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫