Python升级提示Tkinter模块找不到的解决方法
一、安装tkinter
在Linux中python默认是不安装Tkinter模块,
[root@li250-193~]#python Python2.6.6(r266:84292,Feb222013,00:00:18) [GCC4.4.720120313(RedHat4.4.7-3)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter Traceback(mostrecentcalllast): File"<stdin>",line1,in<module> ImportError:NomodulenamedTkinter >>>
我们安装Tkinter模块
[root@li250-193~]#yum-yinstalltkinter ... [root@li250-193~]#python Python2.6.6(r266:84292,Feb222013,00:00:18) [GCC4.4.720120313(RedHat4.4.7-3)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter >>>
二、升级Python
Linux的Python版本默认都不叫低
查看Python版本
[root@li250-193~]#python-V Python2.6.6
DOWN新版本
[root@li250-193~]#wgethttp://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz
解压安装
[root@li250-193~]#tar-xfPython-2.7.4.tgz [root@li250-193~]#cdPython-2.7.4 [root@li250-193Python-2.7.4]#./configure ... [root@li250-193Python-2.7.4]#make ... [root@li250-193Python-2.7.4]#makeinstall ...
看看新版本Python是否可以使用Tkinter?
[root@li250-193Python-2.7.4]#./python Python2.7.4(default,Apr122013,08:03:09) [GCC4.4.620120305(RedHat4.4.6-4)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter Traceback(mostrecentcalllast): File"<stdin>",line1,in<module> File"/root/Python-2.7.4/Lib/lib-tk/Tkinter.py",line39,in<module> import_tkinter#IfthisfailsyourPythonmaynotbeconfiguredforTk ImportError:Nomodulenamed_tkinter >>>
提示找不到tkinter模块?看看旧版的是不是正常
[root@li250-193Python-2.7.4]#python Python2.6.6(r266:84292,Feb222013,00:00:18) [GCC4.4.720120313(RedHat4.4.7-3)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter >>>
旧版的没问题,难道需要yuminstalltkinter一次?
[root@li250-193Python-2.7.4]#yuminstalltkinter Loadedplugins:fastestmirror,security Loadingmirrorspeedsfromcachedhostfile *base:mirror.team-cymru.org *extras:mirror.team-cymru.org *updates:mirror.team-cymru.org SettingupInstallProcess Packagetkinter-2.6.6-36.el6.x86_64alreadyinstalledandlatestversion Nothingtodo
提示已安装,看来不是tkinter的问题,看看tkinter模块在哪里?
[root@li250-193Python-2.7.4]#find/usr-name*tkinter.so /usr/lib64/python2.6/lib-dynload/_tkinter.so
找到一个,在2.6旧版本的目录下,估计是因为新版本库指向问题。于是认真读了README说明。重新配置安装
三、正确安装新版Python
首先修改Setup.dist文件
[root@li250-193Python-2.7.4]#vimModules/Setup.dist
找到下面这几行,把前面的井号去掉打开它
_tkinter_tkinter.ctkappinit.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-193Python-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-193Python-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-193Python-2.7.4]#yum-yinstalltcl-develtk-devel
开始配置安装
[root@li250-193Python-2.7.4]#ldconfig [root@li250-193Python-2.7.4]#./configure ... [root@li250-193Python-2.7.4]#make ... [root@li250-193Python-2.7.4]#makeinstall ...
看下新版Python是否可以使用tkinter模块
[root@li250-193Python-2.7.4]#./python Python2.7.4(default,Apr122013,08:49:11) [GCC4.4.620120305(RedHat4.4.6-4)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter >>>
已经没问题,旧版再看看
[root@li250-193Python-2.7.4]#/usr/bin/python2.6 Python2.6.6(r266:84292,Feb222013,00:00:18) [GCC4.4.720120313(RedHat4.4.7-3)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importTkinter >>>
也没问题
如果直接敲入python-V查看版本是不是最新的,如果不是可以这么干:
which出python命令路径
[root@li250-193Python-2.7.4]#whichpython /usr/local/bin/python
cp过去
[root@li250-193Python-2.7.4]#cppython/usr/local/bin/python
四、升级Python引起yum版本无法使用的问题解决
不少童鞋安装后就
cppython/usr/bin/python
导致yum时就提示
[root@lee~]#yum TherewasaproblemimportingoneofthePythonmodules requiredtorunyum.Theerrorleadingtothisproblemwas: Nomodulenamedyum Pleaseinstallapackagewhichprovidesthismodule,or verifythatthemoduleisinstalledcorrectly. It'spossiblethattheabovemoduledoesn'tmatchthe currentversionofPython,whichis: 2.7.4(default,Apr 92013,17:12:56) [GCC4.4.720120313(RedHat4.4.7-3)] Ifyoucannotsolvethisproblemyourself,pleasegoto theyumfaqat: http://yum.baseurl.org/wiki/Faq [root@lee~]#
因为yum头部默认制定python脚本的路径就是
#!/usr/bin/python
你把旧版的python替换后就是用不了,不知道为何新版Python不能被yum识别,目前唯一最好解决的方法就是修改yum头部声明
改成
#!/usr/bin/python2.6
即可,这里的python2.6是我centos默认版本,大家的默认版本是多少请按实际情况修改即可