首頁 > 軟體

RHEL7.4編繹安裝Python 3.7

2020-06-16 16:34:43

Linux下大部分系統預設自帶Python2.x的版本,最常見的是python2.6或python2.7版本,預設的python被系統很多程式所依賴,比如CentOS下的yum就是python2寫的,所以預設版本不要輕易刪除,否則會有一些問題,如果需要使用最新的Python3那麼我們可以編譯安裝原始碼包到獨立目錄,這和系統預設環境之間是沒有任何影響的,python3和python2兩個環境並存即可。

  首先去python官網下載python3的原始碼包,網址:https://www.python.org/

  進去之後點選導航欄的Downloads,也可以滑鼠放到Downloads上彈出選單選擇Sourcecode,表示原始碼包,這裡選擇最新版本3.7.0,當然下面也有很多其他歷史版本,點進去之後頁面下方可以看到下載連結,包括原始碼包、Mac OSX安裝包、Windows安裝包

這裡選擇第一個下載即可,下載的就是原始碼包:Python-3.7.0.tgz,下載好之後上傳到linux系統,準備安裝

  python安裝之前需要一些必要的模組,比如openssl,readline等,如果沒有這些模組後來使用會出現一些問題,比如沒有openssl則不支援ssl相關的功能,並且pip3在安裝模組的時候會直接報錯;沒有readline則python互動式介面刪除鍵和方向鍵都無法正常使用,至於需要什麼模組在make完之後python會給出提示,通過提示進行安裝即可裝全,下面是需要提前預裝的依賴:

yum -y install gcc zlib zlib-devel
bzip2 bzip2-devel
ncurses ncurses-devel
readline readline-devel
openssl openssl-devel
xz xz-devel
sqlite sqlite-devel
gdbm gdbm-devel
tk tk-devel
libffi-devel

安裝上面這些python內建模組基本上就比較全了,如果後續有其他必要的模組,會繼續補充的,接下來可以安裝python了,編譯過程中會自動包含這些依賴。
解壓檔案:

# tar -xf Python-3.7.0.tgz

進入目錄:

# cd Python-3.7.0

設定編譯

因為上面依賴包是用yum安裝而不是自己編譯的,所以都是安裝在系統預設目錄下,因此各種選項不用加預設即可生效:

./configure --prefix=/usr/python --enable-shared CFLAGS=-fPIC

補充一下:這裡加上--enable-shared和-fPIC之後可以將python3的動態連結庫編譯出來,預設情況編譯完lib下面只有python3.xm.a這樣的檔案,python本身可以正常使用,但是如果編譯第三方庫需要python介面的比如caffe等,則會報錯;所以這裡建議按照上面的方式設定

接下來編譯原始碼:

make

執行安裝:

make install

整個過程大約5-10分鐘,安裝成功之後,安裝目錄就在/usr/python

關於在rhel7下安裝python3.7.0以上版本時報錯ModuleNotFoundError: No module named '_ctypes'的解決辦法
3.7版本需要一個新的包libffi-devel,安裝此包之後再次進行編譯安裝即可
#yum install libffi-devel -y
#make install

安裝完成之後要簡單做一下設定:

        即將python庫路徑新增到/etc/ld.so.conf設定中,然後執行ldconfig生效(切記);或者新增到$LD_LIBRARY_PATH中,這樣在接下來執行python3是就不會報找不到庫檔案的錯誤了。

        我看到這個檔案實際上是包含了/etc/ld.so.conf.d/這個目錄下的所有.conf檔案,因此我們可以在這個路徑下面建立一個新的檔案(python3.conf),其中寫上諸如“/usr/local/lib”、“/usr/local/mysql/lib”的路徑,儲存退出。

#vi /etc/ld.so.conf.d/python3.conf
/usr/python/lib

  系統中原來的python在/usr/bin/python,通過ls -l可以看到,python是一個軟連結,連結到本目錄下的python2.7

  我們可以不用把這個刪除,不對原來預設的環境做任何修改,只新建一個python3的軟連結即可,只是需要執行python3程式碼時python要改成python3,或者python指令碼頭部直譯器要改為#!/usr/bin/python3

  這裡建立有關的軟連結如下:

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


  這樣就建立好了,以後直接執行python3命令就可以呼叫python3了,執行pip3可以安裝需要的python3模組;另外如果仔細看python安裝目錄下的bin目錄,實際上python3也是個軟連結,連結到python3.5.1,這樣多次連結也是為了多個版本的管理更加方便,

  python3新版本的安裝就是這些,因為我們之前安裝了完整的依賴,所以下面問題不存在了,忽略即可,其中的python readline模組也早已經停止更新了,會出現崩潰問題;這裡基礎環境都是使用系統的依賴,更穩定。


IT145.com E-mail:sddin#qq.com