本文的系统版本 centos7 x64,默认的 python 版本为 2.7,升级之后的版本为 3.8.1

安装依赖包

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
yum install libffi-devel # 缺少这个 make 时会报 ModuleNotFound:No module named '_ctypes' 错误

下载源码包

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
tar -zxvf Python-3.8.1.tgz

编译

cd Python-3.8.1.tgz
./configure
make && make instal

修改默认 python 及 pip 命令

mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/bin/python3 /usr/bin/python
mv /usr/bin/pip /usr/bin/pip.bak
ln -s /usr/local/bin/pip3 /usr/bin/pip

处理 yum

由于 yum 需要使用 python 2.7,如果将默认的 python 修改为 python3 版本就会出现问题,这里需要修改两个地方

vim /usr/libexec/urlgrabber-ext-down
vim /usr/bin/yum

把头部的 /usr/bin/python 修改为 /usr/bin/pyhon2.7