CentOS6.6 系统自带的 Python 版本是 Python2.6,但项目需要 Python2.7。

升级 Python2.6 到 Python2.7

  • 下载 Python源码包

    1
    2
    curl https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz > Python-2.7.13.tgz
    tar -zxvf Python-2.7.13.tgz -C /opt/
  • 安装 Python

    1
    2
    3
    cd /opt/Python-2.7.13
    ./configure
    make && make install

    默认安装在 /usr/loca/python2.7 目录下,也可以通过参数配置来指定安装路径 ./configure --prefix=/path/to/install/python
    安装完之后,系统默认的 Python 版本还是 Python2.6 的,需要修改:

    1
    2
    rm -f /usr/bin/python
    ln -s /usr/local/bin/python /usr/bin/python

    修改完之后,发现 yum 工具用不了了,因为 yum 工具是基于 Python2.6 的。将 /usr/bin/yum 的头部 #!/usr/bin/python 改为 #!/usr/bin/python2.6

安装 pip

1
2
3
cd /opt/
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py
  • 如果出现错误:

    zipimport.ZipImportError: can’t decompress data; zlib not available

    是因为系统缺少了 zlibzlib-devel 库。

    1
    yum install -y zlib zlib-devel

    安装成功之后,需要重新编译 Python:

    1
    2
    3
    4
    cd /opt/Python-2.7.13/
    make clean && make && make install
    # 重新编译完成之后再试一次安装 pip
    python get-pip.py
  • 如果接着出现错误:

    Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate: Can’t connect to HTTPS URL because the SSL module is not available. - skipping

    是因为系统缺少 openssl-devel

    1
    yum install -y openssl-devel

    安装成功之后,需要重新编译 Python:

    1
    2
    3
    4
    cd /opt/Python-2.7.13/
    make clean && make && make install
    # 重新编译完成之后再试一次安装 pip
    python get-pip.py

    到这里,我就成功安装了 pip。


总结 update.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

set -e
# 先安装需要的库:
yum install -y gcc zlib zlib-devel openssl-devel
# 下载 Python2.7 的源包
curl https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz > Python-2.7.13.tgz
tar -zxvf Python-2.7.13.tgz -C /opt/
# 安装 Python
cd /opt/Python-2.7.13
./configure
make && make install
# 修改系统默认的 Python 版本
rm -f /usr/bin/python
ln -s /usr/local/bin/python /usr/bin/python
# 将 `/usr/bin/yum` 的头部 `#!/usr/bin/python` 改为 `#!/usr/bin/python2.6`
sed -i '1c #!/usr/bin/python2.6' /usr/bin/yum
# 接着安装 pip
cd /opt/
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py