- 首先下载Linux版python源码“Python-3.7.4.tar.xz”,上传并解压到/usr/local路径下:
xz -dv Python-3.7.4.tar.xz
tar -xvf Python-3.7.4.tar
- 安装编译依赖工具gcc、zlib-devel、bzip2-devel、libffi-devel和openssl-devel:
yum install gcc zlib-devel bzip2-devel libffi-devel openssl-devel
“*”是通配符,表示所有。“zlib*”表示所有以“zlib”开头的安装包。
- 编译安装python3
cd /usr/local/Python-3.7.4
./configure --prefix=/usr/local/python --enable-shared --enable-optimizations
make && make install
- python环境配置
- 备份旧版本python软链接
mv /usr/bin/python /usr/bin/python2
- 创建新版本python软链接
ln -sv /usr/local/python/bin/python3.7 /usr/bin/python
- 添加python环境变量
vi /etc/profile
export PYTHON_HOME=/usr/local/python/
export PATH=$PYTHON_HOME/bin:$PYTHON_HOME/lib:$PATH
source /etc/profile
- 添加python3库的配置信息,将$PYTHON_HOME/lib的绝对路径,添加至conf文件中。
cd /etc/ld.so.conf.d
vi python3.conf
/usr/local/python/lib
ldconfig
或者,将编译python3.7生成的动态链接库拷贝到“/usr/lib64”文件夹下:
scp /usr/local/python/lib/libpython3.7m.so /usr/lib64
scp /usr/local/python/lib/libpython3.7m.so.1.0 /usr/lib64
scp /usr/local/python/lib/libpython3.so /usr/lib64
- 检查python环境配置是否正确
which python
python -V
注:因为linux平台很多工具都还依赖python2,所以升级成python3后要将这些工具的脚本指向旧的python版本,比如yum和firewall-cmd:
- yum采用python作为命令解释器,而且是使用CentOS 7自带的python2.7,现在由于安装了新版本的python3,如果按python3解析2.7的语法会出错的,所以需要修改yum相关文件,让其运行指向旧的版本。
需要修改的文件(注意,之前我们备份的旧python的名称为python2):
/usr/bin/yum
/usr/libexec/urlgrabber-ext-down
/usr/bin/yum-builddep
/usr/bin/yum-config-manager
/usr/bin/yum-debug-dump
/usr/bin/yum-debug-restore
/usr/bin/yum-groups-manager
/usr/bin/yumdownloader
以上文件均将第一行的“#!/usr/bin/python”修改为“#!/usr/bin/python2”。有些文件可能不存在就没必要修改。
- 升级python3后,还要修改的有firewall-cmd:
vi /usr/bin/firewall-cmd
第一行
#!/usr/bin/python -Es
修改为
#!/usr/bin/python2 -Es