CentOS下编译安装Python2.7.6

来源:互联网 发布:snmp服务器软件 编辑:程序博客网 时间:2024/05/21 11:15

CentOS下面Python在升级到2.7.6的时候,没有找到安装包直接安装,只能通过源代码编译的方式来安装Python 2.7.6版本。这篇是编译和安装Python2.7.6的过程记录。

CentOS系统中安装了development tools。要编译安装Python,执行下面代码:

code
1
2
3
4
5
6
7
8
9
10
$ pushd/usr/local/src
$ sudomkdir python
$ sudochown $USER python
$ cdpython
$ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tarzxvf Python-2.7.6.tgz
$ cdPython-2.7.6
$ ./configure--prefix=/usr/local/python-2.7.6 &&
make
$ sudomake install

代码过程:

1. 在/usr/local/src创建python文件夹,并将Python文件夹所有者设置为当前用户(非root)

2. 进入创建的python目录下,从官方网站上下载python2.7.6源代码包。

3. (非必须)如果要校验包的一致性,可以在官方网站上下载sig文件,并通过PGP校验文件,也可以通过官网提供的MD5校验下载的压缩包。更多关于校验的信息请参考Linux下校验文件的完整性(MD5,SHA1,PGP)。本代码忽略了此过程。

4. 解压压缩包到当前目录,并进入Python-2.7.6目录

5. 配置python并编译。这步只是用了--prefix参数指示安装路径。

6. 安装Python

上面是在Python编译安装顺利的情况下的大体流程,但是我在编译的时候,Python出现了下面的提示信息:

code
1
2
3
4
5
6
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 findthe necessary bits, lookin setup.py indetect_modules() forthe module's name.

当然,每个机器上因为不同的配置,编译报错信息也会不同,比如网上有人的报错就是下面这样的:

code
1
2
3
4
5
6
7
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 findthe necessary bits, lookin setup.py indetect_modules() forthe 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。如果不使用桌面程序可以忽略TKinterbsddb185old bsddb module老的bsddb模块,可忽略。bz2bzip2-devel.i686Compression compatible with bzip2。bzip2-develdbmbsddbSimple “database” interface。dlN/ACall C functions in shared objects.Python2.6开始,已经弃用。gdbmgdbm-devel.i686GNU’s reinterpretation of dbmimageopN/AManipulate raw image data。已经弃用。readlinereadline-develGNU readline interfacesunaudiodevN/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是否正常安装。

code
1
2
3
4
5
6
7
$ pushd/usr/local/python-2.7.6/bin
$ python --version
$ sudomv /usr/bin/python/usr/bin/python.old
$ sudoln -s python /usr/bin/python
$ popd
$ python -V
$ sudosed -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中的文章,文中包含自动安装的脚本文件。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 便秘肛裂了好痛怎么办 胃消化慢还便秘怎么办 11个月婴儿便秘怎么办 80多岁老人便秘怎么办 狗狗便秘拉不出来怎么办 2个月幼犬便秘怎么办 狗狗便秘怎么办吃什么 痔疮又痛又痒怎么办 痔疮肉球特别痒怎么办 长了个小痔疮怎么办 产后4天没大便怎么办 7个月孕妇痔疮怎么办 运动完恶心想吐怎么办 跑步后恶心想吐怎么办 肠子不蠕动严重便秘怎么办 怀孕八个月严重便秘怎么办 怀孕七个月便秘严重怎么办 怀孕两个月便秘严重怎么办 3岁宝宝上火便秘怎么办 7个月的宝宝贫血怎么办 9个月婴儿贫血怎么办 肛裂大便有血怎么办 生完宝宝肛门痛怎么办 肛周脓肿出血了怎么办 胃胀怎么办简单的办法 吃多了胃胀难受怎么办 胃窦炎胆汁反流怎么办 怀孕总胆汁酸高怎么办 胃里胆汁反流怎么办 苦胆水吐出来了怎么办 喝多了吐胆汁怎么办 吐出黄水苦水是怎么办 喝酒喝的一直吐怎么办 孕期总胆汁酸高怎么办 孕早期胆汁酸高怎么办 孕妇总胆汁酸高怎么办 宝宝一天吐了6次怎么办 肛周脓肿破了怎么办 肛周脓肿发烧了怎么办 肛周脓肿便血该怎么办 婴儿得肛周脓肿怎么办