在 CentOS 6.9 上将 Python 从 2.6.6 升级到 2.7.13

在多台服务器试过,按下面的步骤执行进行升级应该是没有问题的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
yum update -y
yum install -y centos-release-scl
yum install -y python27
scl enable python27 bash

# 卸载旧版本的 pip
yum erase -y python-pip
curl https://bootstrap.pypa.io/get-pip.py | python

# 让用户注销后重新登录用到的依然是 python2.7
cat > /etc/profile.d/enable_python27.sh<<EOF
#!/bin/bash
source scl_source enable python27
EOF

如果想让 crond 中设置的 python 脚本运行在 python 2.7 上, 可以在执行脚本的命令前加上 source scl_source enable python27,例如:

1
*/5 * * * * source scl_source enable python27;/opt/scrub_workflow/worker_hb.py 2>/opt/scrub_workflow/logs/error.log

至于以前安装的 python module, 可以在升级之前先通过下面的命令得到 module 的列表:

1
pip freeze > requirements.txt

升级之后再在 python2.7 中安装最新的版本:

1
cat requirements.txt | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

最后补充一句,一般情况下还是用PyEnv更好些。不过这几台服务器是我的一个 Python 项目专用的,所以就直接这么升级了。