共698 次浏览

CentOS保证yum可用情况下更换高版本python

在阿里云的虚拟机原本携带的python版本为2.7,现在由于开发需要,把python2.7升级到python3.8。但是在经过第一次尝试之后,发现python成功更换到了3.8版本,但是yum命令无法正常使用了。虽然CentOS现在已经用dnf命令替换了yum,并且dnf的也兼容了yum的用法,但yum用习惯了终究是改不了(其实还没仔细看dnf介绍)

yum命令是基于python写的,并且是python2,如果把系统中的python整个都删除了,或者用python3替换了python2的话,那么yum命令就会报错。想要使用高版本的python,就需要让python2和python3共存。下面以python3.8为例。

1.下载并解压python3.8的压缩包

进入/usr/local/目录下,创建python3文件夹

在python3文件夹中执行命令
wget –no-check-certificate https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
开始下载python压缩包。如果使用的不是3.8版本,可以在这个网址中https://www.python.org/ftp/python/查找需要的版本进行下载。

下载完毕后解压刚刚下载的压缩包
tar -zxvf Python-3.8.1.tgz

2.编译并安装python3.8

在编译之前,安装所需的依赖包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
yum install libffi-devel -y

进入刚刚加压后的python3.8文件夹,依次执行两条命令
./configure
make&&make install

命令执行完毕后就完成了python3.8的安装,默认安装到了/usr/local/bin下。

3.创建软连接

由于我们理想的效果是执行python命令时,默认使用3.8版本的python,那么就需要将原来的python命令软连接到python3,而yum的配置文件默认调用的是/usr/bin/python,我们如果直接把/usr/bin/python软连接到python3,yum就会报错,类似下图。

所以首先修改一下配置文件,将两个文件最开头的python调用改为python2.7。两个配置文件路径为:
/usr/bin/yum
/usr/libexec/urlgrabber-ext-down

修改yum

修改urlgrabber-ext-down

测试yum,此时yum命令可以正常使用

现在开始修改系统默认python命令,让系统默认的python使用python3.8
删除原来的python文件
cd /usr/bin
rm -rf python
将python3软连接至/usr/bin目录下
ln -s /usr/local/bin/python3 /usr/bin/python
修改后的效果

此时执行python,会调用python3.8版本

最后还需要把pip也修改为默认调用pip3的版本。如果不知道pip3的路径,可以使用全局搜索进行查找。
find / -name pip3

可以看到pip3的路径为/usr/local/bin/pip3,剩下的是我个人安装的docker里的,与本次提到的没有关系。

进入/usr/bin后删除原有pip,并且将pip3软连接过来:
rm -rf pip
ln -s /usr/local/bin/pip3 /usr/bin/pip

此时进行测试,pip默认调用的是pip3

至此就全部操作完毕,我们既安装了python3.8版本,并且python和pip命令默认调用3.8版本。yum命令又不会因为高版本的python导致无法使用。

 

 

 

 

此条目发表在Linux分类目录,贴了, 标签。将固定链接加入收藏夹。