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脚本文件。
最新文章
- nodejs之主机不能访问到虚拟机的web服务器
- Win32 RGB三原色
- 根据日期查询access数据库
- Unicode 与 UTF 字符标准
- python 小技巧(import模块、查询类继承关系、安装包)
- LeetCode 75
- gcc,g++,extern “C” :一些编译错误的缘由
- JDBC与SQL SERVER各个版本的连接方法
- HDOJ 1016 Prime Ring Problem素数环【深搜】
- MyBatis Parameter not found
- Android 使用Jsoup解析Html
- 老李分享:持续集成学好jenkins之安装
- Java使用对象流读取文件的问题
- POJ-1679 The Unique MST---判断最小生成树是否唯一
- C语言 递归 汉诺塔问题 最大公约数问题
- 数据库根据id排序
- Hadoop双namenode配置搭建(HA)
- Python之set方法
- 拒绝“高冷”词汇!初学C#中的委托
- 信安实践——自建CA证书搭建https服务器
热门文章
- 将webcam设置为网站favicon
- [IoC容器Unity]第二回:Lifetime Managers生命周期
- dubbo框架初步学习
- Java问题解决:";错误: 找不到或无法加载主类";
- ConcurrentHashMap为何不会出现ConcurrentModificationException异常
- kindle 安卓 app下载的电子书放在什么文件夹?
- 软件安装(ubuntu) --Linux基础编程
- 浅谈Pool对象
- dedecmsV5.7和discuz!X3.4整合之后免激活登陆
- mybatis 一对一关联 association 返回空值