Python升級和相容性配置

dicksonjyl560101發表於2017-12-21

Python裡面有個現象很奇怪,一般要學習Python都會糾結是學習2和3,這個差別和糾結Java5和Java6是完全不一樣的,因為Python裡面的相容性確實是個問題,在《流暢的Python》中寫道:Guido(Python之父,仁慈的獨裁者)在設計 Python3 的過程中,受一篇文章 “Python warts” 的影響,決定不向後相容,否則無法修復大多數缺陷,然後Python很火,你要用Python,就得按照這個理念來。相容性的問題到了開發者這裡就是個大麻煩。

Python升級和相容性配置

Python2和3的差別很大,其實不相容也還可以理解,當做兩個分支也行,但是2.6和2.7的差別竟然也不小。有時候部署環境還是很糾結的。比如作業系統中預設的Python版本是2.6,但是很多應用中的最低要求是2.7,所以就得糾結這個,為了應用還是得升級。

首先是下載個2.7的安裝包。

wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2 --no-check-certificate

解壓 使用的選項是-j 這個和其他壓縮檔案還是有些差別的。

tar -jxvf Python-2.7.tar.bz2

把解壓的Python目錄放到/user/local下面去。

mv Python-2.7 /usr/local/

在原始碼包中,我們修改Modules/Setup.dist裡面zlib的配置

把註釋去掉。

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

剩下的步驟就是編譯安裝了。

./configure

make all

如果這個時候出現了make的錯誤,

make: *** [Modules/zlibmodule.o] Error 1

資訊顯示是和zlib相關的資訊,得重新安裝一個包zlib-devel

yum install zlib-devel

這個階段最好,後面就很輕鬆了。

make all

make install

make clean

make distclean

安裝步驟部署下來,目前的系統層面的Python還是預設的2.6,我們需要修改下預設的配置,把/usr/bin下面的連結改一下。

/usr/local/bin/python2.7 -V

mv /usr/bin/python /usr/bin/python2.6_bak --備份一下原來的。

重新建立軟連結

ln -s /usr/local/bin/python2.7 /usr/bin/python

[root@oel641 Python-2.7]# python -V

Python 2.7

接下來就是yum的部分了,2.7版本中不相容2.6的部分,我們就得修改下yum檔案頭,把python的版本指向2.6

比如修改檔案/usr/bin/yum的頭部內容為

#!/usr/bin/python2.6

接下來就是pip這樣的工具了。

安裝pip,先要配置setuptools,一步一步來,倒還不算麻煩。

wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate -O - | python

然而如果後續你要安裝一些Python的模組,比如psutil,mysql-connector的時候,使用yum安裝就有問題了,因為yum基於的是python 2.6,在2.7的庫檔案裡是沒有的。一種解決方式就是下載原始碼包,原始碼安裝。

折騰了一圈,終於可以使用psutil了,mysql-connector的配置也通了。

剩下的事情就是寫一些簡單的指令碼或者拿來主義,借鑑別人好的指令碼內容。除錯一把,然後在這個基礎上補充一些定製的內容就妥了。

Python升級和相容性配置

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2149015/,如需轉載,請註明出處,否則將追究法律責任。

相關文章