您的位置:首页 > 运维架构 > Linux

CentOS 6.x 升级Python2.6.x到Python2.7.x

2016-10-15 14:34 197 查看
CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本。所以需要进行版本升级。由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python 版本需要注意。

升级步骤

如何欢乐的,没有痛苦的升级python版本 ,往下看 …

1. 更新系统和开发工具集

更新指令,并安装必要的开发工具,比如gcc等:

yum -y update
yum groupinstall -y 'development tools'


另外还需要安装 python 工具需要的额外软件包 SSL, bz2, zlib:

yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget


源码安装Python 2.7.x:

wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz unxz Python-2.7.10.tar.xz
tar -vxf Python-2.7.10.tar


如果系统没有安装xz软件包或者tar软件包,运行下面的命令安装:

yum -y install xz
yum -y install tar


执行完以上命令会解压得到Python-2.7.10这个文件夹,进入该目录并执行以下命令进行配置。

./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib --prefix=/usr/local


其中
--enable-loadable-sqlite-extensions
是sqlite的扩展,如果需要使用的话则带上这个选项。

之后执行:

vi ./Modules/Setup


找到
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
去掉注释并保存,然后进行编译和安装。

make && make install


安装好Python2.7之后我们需要先把Python2.6备份起来,然后再对yum的配置进行修改,如果不进行这一步操作的话,执行yum命令将会提示你Python的版本不对。

(1)执行以下命令,对Python2.6进行备份,然后为Python2.7创建软链接:

mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python


(2)然后编辑
/usr/bin/yum
,将第一行的
#!/usr/bin/python
修改成
#!/usr/bin/python2.6.6


现在执行yum命令已经不会出现之前的错误信息了。

我们执行python -V查看版本信息,如果出现错误:

error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

编辑配置文件:

vi /etc/ld.so.conf


添加新的一行内容/usr/local/lib,保存退出,然后:

/sbin/ldconfig
/sbin/ldconfig -v


2. 安装pip

下载最新版的pip,然后安装。

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py


查找pip的位置:

whereis pip


找到pip2.7的路径,为其创建软链作为系统默认的启动版本。

ln -s /usr/local/bin/pip2.7 /usr/bin/pip


pip安装完毕,现在可以用它下载安装各种包了。

3. python命令行中backspace键出现^H的问题

我一直以来在远程到 Linux 服务器使用其中的 Python、Perl、MongoDB 自带的 shell 时,都会出现敲击 Backspace 键删除某些字符时,字符没有被删除,反而会出现 ^H,只能使用 Ctrl-W 来删除整个单词,非常影响效率,今天闲来无事又看了一遍 《Guide To Unix And Linux》,发现了这个问题的原因

先查看服务器上的 erase 信号的映射:

stty -a


会出现:



可以看出这里的 erase 信号为 ^?,而发送过去的却是 ^H,这就是敲击 Backspace 时为什么不会删除字符而会显示 ^H 的原因,如果要解决这个问题,可以使用 Ctrl-Backspace 键来发送 ^? 信号来删除字符,但是这样还是太麻烦了,需要用组合键,而最简单的方法就是把 Linux 服务器中的 erase 信号设置为 ^H:

stty erase ^H


再看一下 erase 信号的映射:



变为 ^H 了,这样就可以敲击 Backspace 来删除字符,但是这样只是临时的,系统重启过后就会失效,可以把这条命令写入家目录下的 .bash_profile 文件中实现永久修改。

4. 参考链接

https://ruter.github.io/2015/12/03/Update-python/
https://ruiaylin.github. 9ea8
io/2014/12/12/python%20update/

http://leeyx.org/archives/1111
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: