最近在工做中遇到一个问题,就是有一个功能但愿在各类服务器上实现,而服务器上的系统版本可能都不同,有的是 CentOS 6.x,有的是 CentOS 7.x 。html
须要说明的一点是,CentOS 6.x 上的 Python 版本是 2.6.x 的,而 CentOS 7.x 上的 Python 版本是 2.7.x 的,这意味着我要实现的功能要适配这两种版本的系统。python
你可能会说,这有什么的,本身写的时候,注意一下就行了。sql
事情其实没有那么容易,我要实现的功能是基于一个框架进行定制,须要修改很多的框架代码。这个框架在不一样的 Linux 版本上,是有不一样的版本的,并且差别巨大,曾经想过在 CentOS 6.x 和 CentOS 7.x 将这个框架安装成同一个版本,最后仍是失败了,没法安装,缘由就是高版本须要 Python2.7,而 CentOS 6.x 上只有 Python2.6。shell
这个历史问题一直遗留到如今,因为此次的功能影响到的代码较多,若是要对两个版本的框架分别进行定制的话,须要花很多的时间,为了避免维护两套版本,避免浪费多余的精力去作适配,我决定将 CentOS 6.x 上默认的 Python2.6 升级成 Python2.7。vim
下面是整个升级过程,别看步骤简单,这些精简步骤的背后但是有很多的坑,被我踩事后,你能够直接使用了。服务器
$ python -V Python 2.6.6 $ whereis python python: /usr/bin/python /usr/bin/python2.6 /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python /usr/include/python2.6 /usr/share/man/man1/python.1.gz
注意必定要所有安装,否则后面会发现有很多 python 的工具用不了。框架
好比不安装 zlib 会没法安装 setuptools,不装 openssl 和 openssl-devel,会没法使用 pip 工具等python2.7
$ yum install gcc -y $ yum groupinstall "Development tools" $ yum install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel -y
若是你这里未按照个人步骤来安装,你后面使用的时候出现了各类各样的问题,不要慌,只要再回来这里,把没安装的包装上,安装完成后,你须要进入第四步从新编译安装Python。工具
$ wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz $ tar zxvf Python-2.7.14.tgz $ cd Python-2.7.14
# --prefix 指定 python 安装的路径 $ ./configure --prefix=/usr/local/python/python2.7 $ make $ make install
./configure
命令执行完毕以后建立一个文件creating Makefile,供下面的make命令使用 执行 make install
以后就会把程序安装到咱们指定的目录中去。网站
Configure是一个可执行脚本,它有不少选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中 --prefix
选项是配置安装的路径,若是不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在 /usr/local/lib
,配置文件默认放在 /usr/local/etc
,其它的资源文件放在 /usr /local/share
。若是配置 --prefix
,如:./configure --prefix=/usr/local/test
能够把全部资源文件放在/usr/local/test的路径中,不会杂乱。
用了 --prefix
选项的另外一个好处是卸载软件或移植软件。当某个安装的软件再也不须要时,只须简单的删除该安装目录,就能够把软件卸载得干干净净;移植软件只需拷贝整个目录到另一个机器便可(相同的操做系统)。固然要卸载程序,也能够在原来的make目录下用一次 make uninstall
,但前提是make文件指定过uninstall。
$ python -V Python 2.6.6
若是你查看仍是 Python 2.6.6 版本,请继续看第六步。
查看新安装的Python版本,当前系统的Python版本,并将系统指向的Python从2.6.x修改成2.7.x,再次查看当前系统的Python版本,已经变动为2.7.x
# 这是咱们刚安装的 Python $/usr/local/bin/python2.7 -V Python 2.7.14 # 这是系统默认 Python $ /usr/bin/python -V Python 2.6.6 # 备份原来的 Python 文件 $ mv /usr/bin/python /usr/bin/python.bak # 创建软连接,将咱们刚安装的 python2.7 作为系统默认版本 ln -s /usr/local/bin/python2.7 /usr/bin/python # 再次查看 Python 版本,已经成功切换过来 $ python -V Python 2.7.14
上面咱们改了系统的默认 Python 版本,因为CentOS 6.x 的 yum 是基于Python2.6 的,为了避免影响 yum 的使用,需单独将yum指向python2.6版本。
编辑: vim /usr/bin/yum ,将 /usr/bin/python
改为 /usr/bin/python2.6
#!/usr/bin/python2.6
pip是python的安装工具,不少python的经常使用工具,均可以经过pip进行安装。要安装pip,首先要安装setuptools。从这个连接,你能够获得相关信息:https://pypi.python.org/pypi/...
# 下载 setuptools $ wget https://pypi.python.org/packages/ff/d4/209f4939c49e31f5524fa0027bf1c8ec3107abaf7c61fdaad704a648c281/setuptools-21.0.0.tar.gz#md5=81964fdb89534118707742e6d1a1ddb4
一样的,进行安装:
$ tar vxf setuptools-21.0.0.tar.gz $ cd setuptools-21.0.0 $ python setup.py install
安装完成后,下载pip。其信息在以下网站:https://pypi.python.org/pypi/pip
# 下载 pip wget https://pypi.python.org/packages/41/27/9a8d24e1b55bd8c85e4d022da2922cb206f183e2d18fee4e320c9547e751/pip-8.1.1.tar.gz#md5=6b86f11841e89c8241d689956ba99ed7
一样的,进行安装
$ tar vxf pip-8.1.1.tar.gz $ cd pip-8.1.1 $ python setup.py install
安装完成后,执行 pip list
查看一下安装的包,若无异常,则一切顺利。或者你也能够试着安装一下第三方包 pip install requests
。
参考文章