1. 程式人生 > >CentOS 7中實現Python 3.6與2.7共存及版本切換

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以後再執行