歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python build finished, but the necessary bits to build these modules were

Python build finished, but the necessary bits to build these modules were

日期:2017/3/1 9:14:33   编辑:Linux編程

在編譯的時候,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中的文章,文中包含自動安裝的腳本文件。

Copyright © Linux教程網 All Rights Reserved