2、CentOS下編譯安裝Python2.7.6(轉)


CentOS系統下面Python在升級到2.7.6的時候,沒有找到安裝包直接安裝,只能通過源代碼編譯的方式來安裝Python 2.7.6版本。這篇是編譯和安裝Python2.7.6的過程記錄。

CentOS系統中安裝了development tools。要編譯安裝Python,執行下面代碼:

yum install gcc
pushd /usr/local/src
sudo mkdir python
sudo chown $USER python
cd python
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar zxvf Python-2.7.6.tgz
cd Python-2.7.6
./configure --prefix=/usr/local/python-2.7.6 &&
sudo make $ sudo make install

 

代碼過程:

1. 在/usr/local/src創建python文件夾,並將Python文件夾所有者設置為當前用戶(非root)

2. 進入創建的python目錄下,從官方網站上下載python2.7.6源代碼包。

3. (非必須)如果要校驗包的一致性,可以在官方網站上下載sig文件,並通過PGP校驗文件,也可以通過官網提供的MD5校驗下載的壓縮包。

4. 解壓壓縮包到當前目錄,並進入Python-2.7.6目錄

5. 配置python並編譯。這步只是用了--prefix參數指示安裝路徑。

6. 安裝Python [也可使用altinstall的安裝方式,這樣文件末尾會帶上版本號。updated: 2015-07-13]

上面是在Python編譯安裝順利的情況下的大體流程,但是我在編譯的時候,Python出現了下面的提示信息:

Python build finished, but the necessary bits to build these modules were not found:
   _bsddb             _sqlite3           _ssl
   _tkinter           bsddb185           bz2
   dbm                gdbm               readline
   sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

 

當然,每個機器上因為不同的配置,編譯報錯信息也會不同,比如網上有人的報錯就是下面這樣的:

Python build finished, but the necessary bits to build these modules were not found:
   _bsddb             _curses            _curses_panel  
   _sqlite3           _ssl               _tkinter       
   bsddb185           bz2                dbm            
   dl                 gdbm               imageop        
   readline           sunaudiodev        zlib           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

 

無論報錯信息如何,意思很明確,我們編譯的時候,系統沒有辦法找到對應的模塊信息,為了解決這些報錯,我們就需要提前安裝依賴包,這些依賴包對應列表如下(不一定完全)

模塊 依賴 說明
_bsddb bsddb Interface to Berkeley DB library。Berkeley數據庫的接口
_curses ncurses Terminal handling for character-cell displays。
_curses_panel ncurses A panel stack extension for curses。
_sqlite3 sqlite DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安裝sqlite-devel
_ssl openssl-devel.i686 TLS/SSL wrapper for socket objects。
_tkinter N/A a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185 old bsddb module 老的bsddb模塊,可忽略。
bz2 bzip2-devel.i686 Compression compatible with bzip2。bzip2-devel
dbm bsddb Simple “database” interface。
dl N/A Call C functions in shared objects.Python2.6開始,已經棄用。
gdbm gdbm-devel.i686 GNU’s reinterpretation of dbm
imageop N/A Manipulate raw image data。已經棄用。
readline readline-devel GNU readline interface
sunaudiodev N/A Access to Sun audio hardware。這個是針對Sun平台的,CentOS下可以忽略
zlib Zlib Compression compatible with gzip

在CentOS下,可以安裝這些依賴包:readline-devel,sqlite-devel,bzip2-devel.i686,openssl-devel.i686,gdbm-devel.i686,libdbi-devel.i686,ncurses-libs,zlib-devel.i686。完成這些安裝之后,可以再次編譯,上表中指定為棄用或者忽略的模塊錯誤可以忽略。

 

pushd /usr/local/python-2.7.6/bin
python --version
sudo mv /usr/bin/python /usr/bin/python.old
sudo ln -s python /usr/bin/python
popd
python -V
sudo sed -i "s/#\!\/usr\/bin\/python/#\!\/usr\/bin\/python.old/" /usr/bin/yum

 

在編譯完成之后,就可以接着上面的第六步安裝Python到指定目錄下。安裝完成之后,我們可以到安裝目錄下查看Python是否正常安裝。

1. 我們進入到安裝路徑下的bin目錄, 並查看安裝的版本(版本是2.7.6)

2. 將現有的python版本重命名備份

3. 創建新版本Python到/usr/bin目錄下替代原有python

4. 測試系統Python版本(應該是新的2.7.6)

5. 此時如果yum不能正常工作,可以簡單的通過sed將里面的Python引用替換成原來的Python路徑即可。

至此,完成Python的更新編譯安裝工作。如果你想完成自動安裝,可以將前面的代碼保存為Shell腳本文件。


免責聲明!

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



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