美文网首页Python运维与数据分析Python 运维
Centos6下Python2.6升级到Python2.7

Centos6下Python2.6升级到Python2.7

作者: 菩提老鹰 | 来源:发表于2017-04-29 23:14 被阅读947次

    摘要

    Centos6系统默认安装的Python版本是2.6,但是目前好多程序支持2.7及以上版本,故这里介绍如何从2.6升级到2.7,以及过程中遇到的问题


    环境

    [root@i-cnh16bcn opt]# cat /etc/redhat-release
    CentOS release 6.8 (Final)
    
    [root@i-cnh16bcn opt]# python -V
    Python 2.6.6
    

    安装Python2.7

    下载源码包

    wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
    

    解压并且安装

    tar -zxvf Python-2.7.5.tar.gz
    cd Python-2.7.5
    ./configure --prefix=/usr/local/python2.7.5 --enable-shared
    make && make install
    

    注意这里的--enable-shared 强烈建议加上该参数,否则可能执行import module的时候报错不能正常导入

    升级

    mv /usr/bin/python /usr/local/python2.66
    ln -s /usr/local/python2.7.5/bin/python /usr/bin/python
    

    验证

    [root@i-cnh16bcn opt]# python -V
    Python 2.7.5
    

    遇到问题


    问题1

    python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
    

    解决之道

    Python2.7 使用--enable-shared 之后在 /usr/local/python2.7.5/lib下面生成共享文件,需要把这个加入到相关的搜索配置中去

    vim /etc/ld.so.conf
    /usr/local/python2.7.5/lib
    
    ## 然后执行下面的命令使其生效
    /sbin/ldconfig
    /sbin/ldconfig -V
    

    问题2

    [root@i-cnh16bcn opt]# pip -V
    Traceback (most recent call last):
      File "/usr/bin/pip", line 7, in <module>
        from pip import main
    ImportError: No module named pip
    

    解决之道

    /usr/bin/pip已经存在但是还是提示没有pip模块,所以怀疑还是升级版本导致,需要安装最新版

    cd /tmp
    wget https://bootstrap.pypa.io/get-pip.py
    
    ## 用新版Python安装
    /usr/local/python2.7.5/bin/python /tmp/get-pip.py
    
    ## 新安装的pip
    [root@i-cnh16bcn opt]# ls -l /usr/local/python2.7.5/bin/pip*
    -rwxr-xr-x 1 root root 205 Apr 29 22:10 /usr/local/python2.7.5/bin/pip
    -rwxr-xr-x 1 root root 205 Apr 29 22:10 /usr/local/python2.7.5/bin/pip2
    -rwxr-xr-x 1 root root 205 Apr 29 22:10 /usr/local/python2.7.5/bin/pip2.7
    
    ## 验证新安装的pip
    [root@i-cnh16bcn opt]# /usr/local/python2.7.5/bin/pip -V
    pip 9.0.1 from /usr/local/python2.7.5/lib/python2.7/site-packages (python 2.7)
    


    问题3

    Traceback (most recent call last): 
    File "/usr/bin/pip", line 5, in <module> 
    from pkg_resources import load_entry_point 
    ImportError: No module named pkg_resources
    

    解决之道

    还是因为新版Python对应的pip问题,需要把系统默认的换成最新的

    mv /usr/bin/pip /usr/bin/pip.old
    ln -s /usr/local/python2.7.5/bin/pip /usr/bin/pip
    

    附加

    因为YUM使用的是Python2.6,升级之后避免YUM不能使用应该做如下操作

    vim /usr/bin/yum
    #!/usr/bin/python -> #!/usr/bin/python2.66
    

    公众号: Colinws工作室

    相关文章

      网友评论

      • 俞伟荣:非常感谢,很实用。稍微纠正一下,最后那段有点小问题:
        vim /usr/bin/yum
        #!/usr/bin/python -> #!/usr/bin/python2.66
        改成以下可以用哦
        vim /usr/bin/yum
        #!/usr/bin/python -> #!/usr/local/python2.66
        菩提老鹰:嗯,最后这个主要看个人主机上面python2.6的实际路径,系统不一样,可能绝对路径不一样的情况

      本文标题:Centos6下Python2.6升级到Python2.7

      本文链接:https://www.haomeiwen.com/subject/ajettxtx.html