在編譯的時候,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。完成這些安裝之後,可以再次編譯,上表中指定為棄用或者忽略的模塊錯誤可以忽略。
在編譯完成之後,就可以接著上面的第六步安裝Python到指定目錄下。安裝完成之後,我們可以到安裝目錄下查看Python是否正常安裝。
$ 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
1. 我們進入到安裝路徑下的bin目錄, 並查看安裝的版本(版本是2.7.6)
2. 將現有的python版本重命名備份
3. 創建新版本Python到 /usr/bin
目錄下替代原有python
4. 測試系統Python版本(應該是新的2.7.6)
5. 此時如果yum不能正常工作,可以簡單的通過sed將裡面的Python引用替換成原來的Python路徑即可。
至此,完成Python的更新編譯安裝工作。如果你想完成自動安裝,可以將前面的代碼保存為Shell腳本文件——需要注意的是,你可能需要添加各個模塊的安裝腳本,本篇的是通過yum來安裝的。也可以通過參考2中的文章,文中包含自動安裝的腳本文件。