最近学习docker容器,因为平时用的linux发型版都是centos6系列,所有pull了一个centos:6.6的景像,运行景像,进入容器后,发现其默认的python环境是2.6,为了更好的兼容我们公司的一些脚本,要升级python版本至少为2.7。下面就是升级python的过程以及可能遇到的问题。

centos6.6的docker容器中是没有gcc库的,首先安装gcc库

  1. yum install gcc

安装其他必要库,这些库要在编译python源码前安装,在后续安装pip的过程中因为缺失这些导致重新编python译源码n次,着实烦恼啊。

  1. yum install zlib
  2. yum install zlib-devel
  3. yum install openssl
  4. yum install openssl-devel

首先下载python源码包,官网下载地址 https://www.python.org/downloads

  1. wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz

解压到指定目录

  1. tar -xzf Python-2.7.14.tgz

下载setuptool和pip(用来管理python依赖包)

  1. wget https://pypi.python.org/packages/41/5f/6da80400340fd48ba4ae1c673be4dc3821ac06cd9821ea60f9c7d32a009f/setuptools-38.4.0.zip#md5=3426bbf31662b4067dc79edc0fa21a2e
  2. wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9

首先生成python安装路径,我这里将安装路径放在/usr/local下面

  1. mkdir /usr/local/python2.7

进入解压的源码路径,运行下面命令生成Makefile

  1. ./configure --enable-optimizations --prefix=/usr/local/python2.7/

–enable-optimizations 为最优安装,建议使用这个参数。–prefix 声明安装路径

修改 Modules/Setup 文件,修改内容如下

  1. # Socket module helper for SSL support; you must comment out the other
  2. # socket line above, and possibly edit the SSL variable:
  3. #SSL=/usr/local/ssl
  4. _ssl _ssl.c \
  5. -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
  6. -L$(SSL)/lib -lssl -lcrypto

默认这块是注释的,放开注释即开。这块功能是开启SSL模块,不然会出现安装完毕后,提示找不到ssl模块的错误。

Makefile生后依次在当前路径执行编译和安装命令

  1. make & make install

以上命令执行完毕,且无报错的情况下,我们将默认python换将切换至2.7,保险起见现将软链备份。

  1. cd /usr/bin
  2. mv python python.bak

建立新的软链

  1. ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python

运行命令python -V,查看是否出现2.7的版本,出现即为安装成功。

首先进入setuptools的解目录,执行命令

  1. python setup.py install

命令执行成功后,在进入pip-9.0.1的解压目录,执行命令

  1. python setup.py install

至此,我们的升级工作完成。

版权声明:本文为ITer-jack原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ITer-jack/p/8305912.html