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

昨天搭建一套新环境安装ansible,在编译安装python的时候提示一些模块找不到。安装ansible可能用不到没找到的模块,忽略错误继续安装,ansible安装成功。
但是缺少依赖包是一个隐患,上网查询相关文章。
转载自: http://blog.csdn.net/huanle0610/article/details/41174943?_t_t_t=0.7893155753457278

在编译的时候,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.

无论报错信息如何,意思很明确,我们编译的时候,系统没有办法找到对应的模块信息,为了解决这些报错,我们就需要提前安装依赖包,这些依赖包对应列表如下(不一定完全):

模块依赖说明
_bsddbbsddbInterface to Berkeley DB library。Berkeley数据库的接口
_cursesncursesTerminal handling for character-cell displays。
_curses_panelncursesA panel stack extension for curses。
_sqlite3sqliteDB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_sslopenssl-devel.i686TLS/SSL wrapper for socket objects。
_tkinterN/Aa thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185old bsddb module老的bsddb模块,可忽略。
bz2bzip2-devel.i686Compression compatible with bzip2。bzip2-devel
dbmbsddbSimple “database” interface。
dlN/ACall C functions in shared objects.Python2.6开始,已经弃用。
gdbmgdbm-devel.i686GNU’s reinterpretation of dbm
imageopN/AManipulate raw image data。已经弃用。
readlinereadline-develGNU readline interface
sunaudiodevN/AAccess to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlibZlibCompression 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/python2.7.6/bin python –version
sudomv/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)

  1. 将现有的python版本重命名备份
  2. 创建新版本Python到 /usr/bin 目录下替代原有python
  3. 测试系统Python版本(应该是新的2.7.6)
  4. 此时如果yum不能正常工作,可以简单的通过sed将里面的Python引用替换成原来的Python路径即可。

至此,完成Python的更新编译安装工作。如果你想完成自动安装,可以将前面的代码保存为Shell脚本文件——需要注意的是,你可能需要添加各个模块的安装脚本,本篇的是通过yum来安装的。也可以通过参考2中的文章,文中包含自动安装的脚本文件。

参考:

  1. Python官方网站

  2. Install Python 2.7.2 On CentOS 5.2 ,包含自动化安装脚本。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值