需求
在centos7上的python版本為2.7,而python部分新的庫只能在python3上跑,因此我們需要更新到python3,我也建議大家迅速轉向python3,畢竟這是主流,python2將在2020年即失去官方支持。
1. 下載Python3.6.1的安裝包
默認Linux的安裝包只能是源碼安裝
# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
由于xz結尾的文件,故可以使用如下命令來解壓
# xz -d Python-3.6.1.tar.xz
# tar xvf Python-3.6.1.tar
2. 安裝配置
進入解壓縮后的目錄,安裝配置
# cd Python-3.6.1
# ./configure
執行 ./configure 時,可能會報錯
# configure: error: no acceptable C compiler found in $PATH
原因是沒有安裝gcc,因為python是用C寫的,所以需要用gcc進行編譯,所以需要先安裝gcc
# yum install make gcc gcc-c++
3. 編譯安裝
配置完成之后,就可以進行編譯了
# make all
安裝,此處要等到比較長的時間,大概十幾分鐘
# make install
又安裝失敗了,我還能怎么辦,我也很絕望
zipimport.ZipImportError: can't decompress data; zlib not available
但是這個世界上是沒有程序員解決不到的事情的!以下這個就是解決辦法
zipimport.ZipImportError: can't decompress data; zlib not available 解決辦法
按照方法安裝完依賴包,重新執行以下語句
# make && make install
成功安裝!
4. 驗證安裝
# python -V
# python3 -V
一個是舊版本 2.x,另外一個是新版本 3.x
5. 設置python3.x為默認版本
查看 Python 的路徑,在 /usr/bin 下面??梢钥吹?python 鏈接的是 python 2.7,所以,執行 python 就相當于執行 python 2.7
[root@VM_181_254_centos Python-3.6.1]# ls -al /usr/bin | grep python
lrwxrwxrwx 1 root root 7 Jun 2 14:10 python.bak -> python2
lrwxrwxrwx 1 root root 9 Jun 2 14:10 python2 -> python2.7
-rwxr-xr-x 1 root root 7136 Nov 6 2016 python2.7
將原來 python 的軟鏈接重命名
# mv /usr/bin/python /usr/bin/python.bak
將 python 鏈接至 python3
# ln -s /usr/local/bin/python3 /usr/bin/python
這時,再查看 Python 的版本
# python -V
Python 3.6.1
配置yum
python升級后,發現yum無法使用了
# yum
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
原因:這是因為yum采用python作為命令解釋器,這可以從/usr/bin/yum文件中第一行#!/usr/bin/python發現。而python版本之間兼容性不太好,使得2.X版本與3.0版本之間存在語法不一致問題。而CentOS 7自帶的yum采用的是python2.7,當系統將python升級到3.0后,出現語法解釋錯誤。
解決辦法:
很簡單,一是升級yum,二是修改yum的解釋器為舊版本python2.7(如果你沒有采用覆蓋升級的話)
升級yum的作法就不詳述了;
修改yum的解釋器為舊版本python2.7
# vi /usr/bin/yum
將第一行"#!/usr/bin/python" 改為 "#!/usr/bin/python2.7"即可
下面也同樣修改
# vi /usr/libexec/urlgrabber-ext-down
至此,python就以及完全安裝好了!
參考的博客:
感悟
這個更新過程很簡單,不過更新起來卻一波三折,百度的搜索算法有毒,有很多無法正確升級的教程居然可以放在第一頁。不過也正因為如此,在沒有一個好的教程的情況下,自己要準確知道每一步的作用和意義,也由于這個原因,自己對在Linux系統上安裝軟件有了一個新的了解。