文章目录
CentOS7 下升级Python版本
服务器版本:CentOS 7.3 64位
旧Python版本:2.7.5
新Python版本:3.8.0
1、切换目录到/usr/local
[root@ chenc01 ~]# cd /usr/local/
[root@ chenc01 local]# ls
bin etc games include lib lib64 libexec sbin share src
2、下载目录Python版本压缩包
[root@ chenc01 local]# wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz
--2020-03-10 17:14:37-- http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz
[root@ chenc01 local]# ls
bin etc games include lib lib64 libexec Python-3.8.0.tgz sbin share src
3、解压Python压缩包
[root@ chenc01 local]# tar zxf Python-3.8.0.tgz
4、在当前目录下创建文件夹–Python3
[root@ chenc01 local]# mkdir python3
[root@ chenc01 local]# ls
bin games lib libexec Python-3.8.0 sbin src
etc include lib64 python3 Python-3.8.0.tgz share
5、编译安装
# 进入解压文件路径
[root@ chenc01 local]# cd Python-3.8.0/
# 生成makefile文件
[root@ chenc01 Python-3.8.0]# ./configure --prefix=/usr/local/python3
# 对makefile文件进行操作
[root@ chenc01 Python-3.8.0]# make
# 安装
[root@ chenc01 Python-3.8.0]# make install
命令解释:
在Linux中通过源码安装程序时,对于解压文件,先执行./configure,后执行make,最后执行make install
make 命令 是对makefile文件操作,make install 是安装命令,那么 ./configure 是干什么呢?./configure 其实就是生成 makefile 文件
prefix作用:编译的时候用来指定程序存放路径。
不指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share
指定prefix,直接删掉一个文件夹就够了
6、直接创建Python3软连接
# 在/usr/bin路径下创建python3软链,指向已安装的python3
[root@ chenc01 Python-3.8.0]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# 在/usr/bin路径下创建pip3软链,指向已安装的pip3
[root@ chenc01 Python-3.8.0]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
7、 覆盖现有python,启动python时指向python3.8
[root@ chenc01 Python-3.8.0]# mv /usr/bin/python /usr/bin/python2_old
[root@ chenc01 Python-3.8.0]# mv /usr/bin/pip3 /usr/bin/pip2_old
# 修改软连接
[root@ chenc01 Python-3.8.0]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
[root@ chenc01 Python-3.8.0]# ln -s /usr/local/python3/bin/pip /usr/bin/pip
8、收尾工作
由于修改了python的版本,会导致一些依赖于旧版本的程序出现错误,如yum,可进行如下配置:
[root@ chenc01 Python-3.8.0]# vim /usr/bin/yum
# 原
#!/usr/bin/python
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
# 改
#!/usr/bin/python2.7
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
[root@ chenc01 Python-3.8.0]# python -V
Python 3.8.0