Python2 版本升级
一、前言
Linux系统中默认带的版本是Python2.7.5,升级到2.7.18。
本文档基于CentOS 7.9(2009) 编写
文档兼容性列表
- CentOS 7.9(2009) 通过
- Ubuntu 18.04 暂未验证
CentOS 7.6(1810) 暂未验证
二、升级步骤
2.1 安装常用编译工具(可选)
出于最小化安装的原则,可先执行编译安装,再根据提示安装所需依赖。
sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel2.2 下载Python源码
sudo wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz2.3 解压源码
sudo tar xzf Python-2.7.18.tgz cd Python-2.7.182.4 编译安装
sudo ./configure --enable-optimizations sudo make altinstall注意,此处使用
make ltinstall命令(而非make install),防止覆盖系统默认的python命令。三、软链接
Python2.7.18安装路径是
/usr/local/bin/路径。/usr/local/bin/ ├── 2to3 ├── idle ├── pydoc ├── python2.7 ├── python2.7-config └── smtpd.py系统自带的python在
/usr/bin/路径/usr/bin/ ├── pydoc ├── python -> python2 ├── python2 -> python2.7 ├── python2.7可以看到,在
/usr/bin/路径下,python是指向python2的软链接,而python2又是指向python2.7的软连接。/usr/bin中的python2.7是系统自带的python,即python2.7.5版本。
通过查看系统环境变量可知:[root@CentOS bin]# echo $PATH /iyunwen/server/jdk8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin在目前情况下,直接执行
python命令,会执行/usr/bin/python2.7,即python2.7.5版本。
由于在目前的$PATH中python2.7.18版本所在的/usr/local/bin路径优先于/usr/bin路径。执行python2.7命令时,会启动新安装的python2.7.18版本。3.1 修改软链接
ln -snf /usr/local/bin/python2.7 /usr/bin/python2修改后不论是执行
python、python2、python2.7都将运行python2.7.18新版本3.2 恢复旧版本
ln -snf /usr/python2.7 /usr/bin/python2将软连接修改回旧版本
修改后执行python、python2、python2.7将运行python2.7.5老版本
执行python2.7将运行python2.7.18新版本3.3 删除新版本安装
如不再需要新版本可删除
/usr/local/bin/中属于python2.7.18的程序文件。/usr/local/bin/ ├── 2to3 ├── idle ├── pydoc ├── python2.7 ├── python2.7-config └── smtpd.py注意,如果目录内有其他文件请谨慎删除。
四、覆盖升级
4.1 覆盖安装python
上文中采用共存方式升级,以便进行退回。
若需要覆盖升级,在进行2.4 编译安装步骤时使用如下命令:
sudo ./configure --enable-optimizations
sudo make install使用make install安装后,程序会自动生产软连接。
/usr/local/bin/
├── 2to3
├── idle
├── pydoc
├── python -> python2
├── python2 -> python2.7
├── python2.7
├── python2.7-config
├── python2-config -> python2.7-config
├── python-config -> python2-config
└── smtpd.py此时由于/usr/local/bin在$PATH中的优先级更快,因此执行python、python2、python2.7都将运行python2.7.18。
老版本python2.7.5文件可以删除。