CentOS 7中实现Python 3.

发布时间:2019-08-15 09:53:09编辑:auto阅读(1307)

    貌似目前大多数Linux发行版本中自带的Python还都是2.7.x系列,但是越来越多的包包都开始抛弃2.7.x版本了,记录一下在CentOS 7中安装Python 3.6实现与自带2.7两个版本共存并可以自由切换

    1.安装Python 3.6和pip

    先添加阿里云镜像站的EPEL仓库,然后一键傻瓜yum走起

    # cd /etc/yum.repo.d/
    # curl -o epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
    # yum install -y python36 python36-setuptools

    2.update-alternatives分别安装两个版本的python和pip

    # alternatives --install /usr/bin/python python /usr/bin/python2.7 1
    # alternatives --install /usr/bin/python python /usr/bin/python3.6 2
    # mv /usr/bin/pip /usr/bin/pip.bak    //原有的pip不是软连接,先把它干掉
    # alternatives --install /usr/bin/pip pip /usr/bin/pip2.7 1
    # alternatives --install /usr/bin/pip pip /usr/local/bin/pip3.6 2

    检查一下设置是否生效

    # alternatives --display python
    python - status is auto.
     link currently points to /usr/bin/python3.6
    /usr/bin/python2.7 - priority 1
    /usr/bin/python3.6 - priority 2
    Current `best' version is /usr/bin/python3.6.
    

    3.切换Python和pip版本

    # alternatives --config python
    
    There are 2 programs which provide 'python'.
    
      Selection    Command
    -----------------------------------------------
       1           /usr/bin/python2.7
    *+ 2           /usr/bin/python3.6
    
    Enter to keep the current selection[+], or type selection number:
    
    # alternatives --config pip

    在这里输入对应版本的序号就可以完成一键切换了~

    4.后续yum问题

    当切换成Python3以后发现yum命令不能用了,一执行就会报错:

    # yum
      File "/usr/bin/yum", line 30
        except KeyboardInterrupt, e:
                                ^
    SyntaxError: invalid syntax

    这是因为系统yum命令使用的还需要使用Python2,分别修改/usr/libexec/urlgrabber-ext-down和/usr/bin/yum文件

    # vi /usr/libexec/urlgrabber-ext-down
    # vi /usr/bin/yum
    首行的#! /usr/bin/python
    都改为#! /usr/bin/python2.7

    这样在切换到Python3.6以后也可以正常使用yum了

    5.firewall-cmd也需要手工设置一下

    # vim /usr/bin/firewall-cmd
    
    首行改为
    #!/usr/bin/python2.7 -Es
    

    6.补充知识点

    貌似CentOS7里面使用yum install python36后内置的就有pip,但是调用的时候不能直接pip install xxx这种写法,得这样写:

    # python -m pip install [Package_to_install]
    这里需要将python切换到3.6以后再执行

     

关键字