CentOS 7中實現Python 3.6與2.7共存及版本切換
阿新 • • 發佈:2019-02-16
貌似目前大多數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以後再執行