zoukankan      html  css  js  c++  java
  • Linux升级Python提示Tkinter模块找不到解决[转载]

    Linux升级Python提示Tkinter模块找不到解决

    Python 2013-04-12 python,升级,tkinter

    一、安装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默认版本,大家的默认版本是多少请按实际情况修改即可






  • 相关阅读:
    搭建DG(data guard),及搭建过程中遇到的一些小问题 高伟
    介绍linux下vi命令的使用
    linux gcc编译器使用
    Linux进程编程介绍
    事件与接口实例讲解 C#
    Linux 2.6内核的编译步骤及模块的动态加载
    C# 各种定时器比较 zz
    linux下增加系统调用
    VirtualBox共享文件夹
    C++程序的单元测试(转贴)
  • 原文地址:https://www.cnblogs.com/iathena/p/30b3f41554bbe1609656a7dff6911069.html
Copyright © 2011-2022 走看看