CentOS 7中实现Python 3.6与2.7共存及版本切换

貌似目前大多数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以后再执行

本文来源于互联网:CentOS 7中实现Python 3.6与2.7共存及版本切换

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注