CentOS7 下升級Python版本


來博客園的第一篇博客,以后要堅持養成記錄、分享的習慣啊,這樣生活才會有痕跡~


服務器版本:CentOS 7.3 64位

舊Python版本:2.7.5

新Python版本:3.8.0

說明:本次配置使用root用戶進行操作,故在代碼中未使用sudo語句,請使用非root用戶留意


 1、切換工作目錄至/usr/local

在Linux系統下,路徑/usr/local相當於C:/Progrem Files/,通常安裝軟件時便安裝到此目錄下。

執行命令:

cd /usr/local

2、下載目標python版本壓縮包

執行命令:

wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz

這里,我使用的是python在國內的鏡像,若希望使用官網地址當然也是可以的,不過速度就兩說了...

3、解壓壓縮包

執行命令:

tar -xzf Python-3.8.0.tgz

4、在當前目錄下創建文件夾--python3

執行命令:

mkdir python3

5、編譯與安裝

執行步驟:

a.進入解壓文件路徑

cd Python-3.8.0

b.生成makefile文件

./configure --prefix=/usr/local/python3

c. 對makefile文件進行操作

make

d.安裝

make install

命令解釋:

  • 在Linux中通過源碼安裝程序時,對於解壓文件,先執行./configure,后執行make,最后執行make install

    make 命令 是對makefile文件操作,make install 是安裝命令,那么 ./configure 是干什么呢?./configure 其實就是生成 makefile 文件

——參考“朝聞道

  • --prefix作用:編譯的時候用來指定程序存放路徑。

    不指定prefix,可執行文件默認放在/usr/local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc,其它的資源文件放在/usr/local/share

    指定prefix,直接刪掉一個文件夾就夠了

——參考“百度知道

問題:

在這個過程中,出現了安裝失敗的問題:

zipimport.ZipImportError: can't decompress data; zlib not available

這是由於缺少依賴造成的,可執行以下代碼:

yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

——參考“寒爵

6、兩種版本配置方法

關於配置python版本的方法大致分為兩種

  1. 直接創建python3軟鏈,利用命令 python3 調用新版本python,與自帶python不沖突
  2. 覆蓋現有python,使其指向新安裝的python,利用命令 python 便可調用新版本python

所涉及命令解釋

  • ln命令用來為文件創建鏈接,鏈接類型分為硬鏈接和符號(軟)鏈接兩種,默認的連接類型是硬連接。如果要創建符號鏈接必須使用"-s"選項,符號鏈接相當於Windows下的快捷方式,即可以實現啟動python時指向python3.8
ln -s a b # 建立軟連接,b指向a

——參考“顏子

下面分別對兩種方法進行介紹。

6.1直接創建python3軟鏈

在/usr/bin路徑下創建python3軟鏈,指向已安裝的python3

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

在/usr/bin路徑下創建pip3軟鏈,指向已安裝的pip3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

此時系統中存在兩個python版本:

命令 python 對應的仍是默認2.7版本

命令 python3 則對應新安裝的3.8版本,

此本方法到此便結束了,可以快樂地打出 python3 -V, pip3 -V查看對應版本了

6.2  覆蓋現有python,啟動python時指向python3.8

備份舊python與pip

 mv /usr/bin/python /usr/bin/python2_old
 mv /usr/bin/pip /usr/bin/pip2_old  #第三部分的文件名可根據本機版本修改

修改軟鏈接

ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

此方法到這里已經完成一半啦,可以使用命令 python -V, pip -V查看版本

根據“撐起風帆”的經驗,還應該對easy_install的指向進行修改,使用python3時可能會用到(未驗證),用到時可根據上述“修改軟鏈接”的方法進行修改

6.2.1 收尾工作

由於修改了python的版本,會導致一些依賴於舊版本的程序出現錯誤,如yum,可進行如下配置:

打開yum文件

vim /usr/bin/yum

文件第一行如下圖:

 將python修改為舊的版本號,此處添加2.7:

 不過在安裝軟件時仍會報錯:

SyntaxError: invalid syntax
  File "/usr/libexec/urlgrabber-ext-down", line 28
  except OSError, e:

還是因為python更換的原因, 依照上述操作修改文件即可:打開/usr/libexec/urlgrabber-ext-down 文件,將 #!/usr/bin/python   修改為 #!/usr/bin/python2.7   

其他工具或庫如果在安裝過程中也報類似錯誤,同法處理。

此時系統仍存在兩個python版本,但命令 python 對應的是新安裝的3.8版本,命令 python2 才對應之前的默認2.7版本
此方法到這里就結束啦!


 除文中所列參考文章外,主要參考文章還有:

https://blog.csdn.net/bawenmao/article/details/80216516

https://blog.csdn.net/u011798443/article/details/80825817

謝謝以上各位!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM