说明:
由于有朋友问了个关于turtle包怎么使用的问题,我才发现自己的包用不起来,于是查阅了很多资料。
import TKinter的时候报错,并不是报没有找到相应的moudle而是说缺少某个.so文件。
最后确认是由于升级成python3.4而导致配置文件被修改,我这里使用的是arch linux 我的配置文件在/usr/lib/python2.7/config/Setup (由于我虽然升级成了3.4,仍然使用2.7所以我修改的是这里的配置文件)
后面具体的操作参见下面的文章,感这篇文章的作者!
下面复制文章的内容以作备份,望原作者见谅:
一、安装tkinter
在Linux中python默认是不安装Tkinter模块,
1
2
3
4
5
6
7
8
9
|
[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模块
1
2
3
4
5
6
7
8
|
[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版本
1
2
|
[root@li250-193 ~]
# python -V
Python 2.6.6
|
DOWN新版本
1
|
[root@li250-193 ~]
# wget http://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz
|
解压安装
1
2
3
4
5
6
7
8
|
[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?
1
2
3
4
5
6
7
8
9
10
11
|
[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模块?看看旧版的是不是正常
1
2
3
4
5
6
|
[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一次?
1
2
3
4
5
6
7
8
9
|
[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模块在哪里?
1
2
|
[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文件
1
|
[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版本修改
1
2
3
4
5
|
[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
1
|
[root@li250-193 Python-2.7.4]
# yum -y install tcl-devel tk-devel
|
开始配置安装
1
2
3
4
5
6
7
|
[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模块
1
2
3
4
5
6
|
[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
>>>
|
已经没问题,旧版再看看
1
2
3
4
5
6
|
[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命令路径
1
2
|
[root@li250-193 Python-2.7.4]
# which python
/usr/local/bin/python
|
cp 过去
1
|
[root@li250-193 Python-2.7.4]
# cp python /usr/local/bin/python
|
四、升级Python引起yum版本无法使用的问题解决
不少童鞋安装后就
cp python /usr/bin/python
导致yum时就提示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[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默认版本,大家的默认版本是多少请按实际情况修改即可