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操作SQLite数据库及文件操作详解
Sep 22 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
Python当中的array数组对象实例详解
Jun 12 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
Pytorch模型转onnx模型实例
Jan 15 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
Python实现拼音转换
Jun 07 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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中的cookie不用刷新就生效的方法
2012/02/04 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
Javascript函数的参数
2015/07/16 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
python操作字典类型的常用方法(推荐)
2016/05/16 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
材料工程专业毕业生求职信
2014/03/04 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
导游词之千岛湖
2019/09/23 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL