Linux下編譯安裝python3


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

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

  進去之后點擊導航欄的Downloads,也可以鼠標放到Downloads上彈出菜單選擇Source code,表示源碼包,這里選擇最新版本3.5.1,當然下面也有很多其他歷史版本,點進去之后頁面下方可以看到下載鏈接,包括源碼包、Mac OSX安裝包、Windows安裝包

  

  這里選擇第一個下載即可,下載的就是源碼包:Python-3.5.1.tgz,下載好之后上傳到linux系統,准備安裝

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

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

       安裝上面這些python內置模塊基本上就比較全了,如果后續有其他必要的模塊,會繼續補充的,接下來可以安裝python了,編譯過程中會自動包含這些依賴.

  釋放文件:

tar -xvzf Python-3.5.1.tgz

  進入目錄:

cd Python-3.5.1/

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

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

      補充一下:這里加上--enable-shared和-fPIC之后可以將python3的動態鏈接庫編譯出來,默認情況編譯完lib下面只有python3.xm.a這樣的文件,python本身可以正常使用,但是如果編譯第三方庫需要python接口的比如caffe等,則會報錯;所以這里建議按照上面的方式配置,另外如果openssl不使用系統yum安裝的,而是使用自己編譯的比較新的版本可以使用--with-openssl=/usr/local/openssl這種方式指定,后面目錄為openssl實際安裝的目錄,另外編譯完還要將openssl的lib目錄加入ld運行時目錄中即可. 

  接下來編譯源碼:

make

  執行安裝:

make install

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

      安裝完成之后要簡單做一下配置:即將python庫路徑添加到/etc/ld.so.conf配置中,然后執行ldconfig生效;或者添加到$LD_LIBRARY_PATH中,這樣在接下來運行python3是就不會報找不到庫文件的錯誤了.

  系統中原來的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模塊也早已經停止更新了,會出現崩潰問題;這里基礎環境都是使用系統的依賴,更穩定.

       --------------------------------------------華麗的分割線---------------------------------------------------

  另外可能會遇到一個問題就是,python3交互式界面特別不好用,刪除不能正常使用,必須按Ctrl+刪除鍵才可以,上下鍵重復命令也無法使用,左右調整光標也無法使用,這樣調試代碼效率很低,原因是python3缺少readline這個依賴,默認使用pip3 install readline會提示找不到包,所以只能是手動安裝了

  因為readline依賴於ncurses庫,如果沒有這個庫,編譯readline的時候會提示can not find -lncurses,如果在centos環境下可以執行下面命令安裝:

yum -y install ncurses ncurses-devel

  安裝ncurses庫之后,再安裝readline,readline可以在pypi下載,地址:https://pypi.python.org/pypi/readline,這里一定要下載源碼包,其余的只能用於python2,下載之后執行下面命令安裝:

tar -xvzf readline-6.2.4.1.tar.gz
cd readline-6.2.4.1/
python3 setup.py install

  這樣執行完畢就為python3安裝了readline,然后再進入交互式界面所有的操作都好用了


免責聲明!

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



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