CentOS7下安装python3.8卸载3.6

在装好的kaldi的centos7上跑特征提取时发现一个问题,就是Librosa需要的python环境版本太低了,因为centos自带的是python36,所以索性卸掉python36,编译安装一下python38。

Librosa是一个 Python 模块,用于分析一般的音频信号,是一个非常强大的python语音信号处理的第三方库。

一、卸载

根据查到的资料,主要就是卸载,然后删除一些软连接删除干净,逻辑很简单,贴一些具体的操作代码,记录下来 。

卸载Python3的步骤

1
2
3
4
5
6
7
8
#卸载python3
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps

#删除所有残余文件
whereis python3 |xargs rm -frv

#查看现有安装的python,验证是否删除干净
whereis python

二、安装

1.安装依赖

1
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

如果有提示一路选择Y就可以。

安装libffi-devel依赖。

1
yum install libffi-devel -y 

注意:如果不安装这个包,python3可以装成功,但是后面装flask、uwsgi等依赖python3中有个内置模块叫ctypes时会报错。报错ModuleNotFoundError: No module named ‘_ctypes‘。需要安装依赖包和重新编译安装python3。 参看:https://blog.csdn.net/qq_36416904/article/details/79316972

2.下载python源码包

下载稳定版本3.8版

1
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz

3.解压python源码包

1
tar -zxvf Python-3.8.12.tgz -C /home

4.编译安装

进入解压后的目录进行编译和安装

1
./configure
1
make&&make install

执行完后显示安装成功

5.建立命令软链接

虽然python3.8.12安装成功了,输入python显示是2.7版本的,输入python3是找不到命令的,原因是因为没有把python3添加在环境变量中。为了实现两种python均保留在环境变量里,即要用python3.8.12需要输入python3即可,要用python2输入python。

可以通过修改软链接的方式将python3指向python3.8.12。
先看一下默认的python及新安装的python3都安装在哪里(那里应该就是环境变量位置)

1
2
[root@ /home/Python-3.8.12]# which python
/usr/bin/python
1
2
[root@ /home/Python-3.8.12]# which python3
/usr/local/bin/python3

可以看到默认的python路径为/usr/bin/python,python3的路径为/usr/local/bin/python3
在相同位置python3的软链接加到python上

1
ln -s /usr/local/bin/python3 /usr/bin/python3

通过python -V命令查看python版号,这时python的版本已经是3.8.12了。

1
2
[root@ /home/Python-3.8.12]# python -V
Python 3.8.12

6.添加pip3

pip命令也可以修改,python3.8.12默认的pip是pip3,CentOS7的python2.7默认没有安装pip。

输入pip命令的时候提示命令没有找到

1
2
[root@ /home/Python-3.8.12]# pip
-bash: pip: command not found

这时也可以通过建立软链接的方式将pip命令链接到pip3上。首先看pip3命令在哪?

1
2
[root@ /home/Python-3.8.12]# which pip3
/usr/local/bin/pip3

然后建立pip到pip3的软链接

1
ln -s /usr/local/bin/pip3 /usr/bin/pip3
1
2
[root@ /home/Python-3.8.12]# pip -V
pip 21.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

7.配置yum*

如果你执意将python3的软连接设为python,那么恭喜你,安装python3改完软链接以后发现yum命令报错了,yum是依赖python2.7的,你把python改成了3.8了,所以报错了。

1
2
3
4
5
[root@lyy Python-3.8.12]# yum
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax

可以cd到/usr/bin目录下 通过ls -alh|grep python查看python命令的详细情况。

1
2
[root@localhost Python-3.8.12]# cd /usr/bin/
[root@localhost bin]# ls -alh|grep python

python3->python3.8

可以看到python软连接是执行的python2命令,python2是执行的python2.7的命令,上图为python3->python3.8,应该不会报错。

python->python3

可以看到python软连接是执行的python3命令,python2是执行的python2.7的命令,这样你yum时会报错的。

以下针对错误的解决措施。

1
vim /usr/libexec/urlgrabber-ext-down

修改对python的依赖,修改成python2或python2.7都可以。

在这里插入图片描述

1
vim /usr/bin/yum

在这里插入图片描述

修改完这两个文件后,再敲yum命令就不会报错了(未试)。

至此CentOS7环境下python3.8.12已经成功安装!

参考


CentOS7下安装python3.8卸载3.6
https://blog.baixf.tk/2022/07/08/python/CentOS7下安装python3.8卸载3.6/
作者
白小飞
发布于
2022年7月8日
许可协议