本次使用系统:Centos7.6(官方镜像)X86_64架构
系统镜像下载地址:https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
部署工具和依赖
1:安装 "Development tools" 软件组,其中包含编译和开发工具
yum -y groupinstall Development tools
如果提示没有可用包就先执行以下命令:
yum clean all
2:安装 Python 编译和运行所需的开发库和依赖项
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
3:安装 libffi 开发库和 zlib1g-dev 包,它们是 Python 编译和运行的额外依赖项
yum install -y libffi-devel zlib1g-dev
4:#安装所有以 "zlib" 开头的软件包,以满足可能的 zlib 依赖项
yum install zlib* -y
安装OpenssL
下载openssL1.1.1版本
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
**2.**解压压缩包
tar -zxvf openssl-1.1.1.tar.gz
**3.**进入openssl目录
cd openssl-1.1.1
4. 编译并安装OpenssL
./config shared zlib
make && make install
!!!!安装的路径为:/usr/local/bin/openssl!!!!
PS:编译安装时间比较久,并且不建议使用多线程编译,为了稳定请使用单线程编译即可
5编译完成,进行替换原有的Openssl
注:如果有程序需要依靠旧版openssl运行,请先备份完旧版openssl后再执行以下命令!!!
rm -rf /usr/lib64/libssl.so
rm -rf /usr/lib64/libcrypto.so
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
6:测试是否安装完成:
用openssl version命令来查询
如果输出为 OpenSSL 1.1.1 11 Sep 2018
则代表安装成功
安装python3.10.1前准备
1:下载Python压缩包(你想选择其他版本就更改其中的数字就行,但是后面的教程你要注意你的文件名称)
PS:这里的压缩包我默认下载到root目录下
cd /root
wget https://mirrors.huaweicloud.com/python/3.10.1/Python-3.10.1.tgz
2:解压文件夹
tar -xvf Python-3.10.1.tgz
3:进入python目录
cd Python-3.10.1
3: 创建 Python 3.10 的安装目录
mkdir /usr/local/python3
完成前期部署了这里就先放一放,接下来我们要去做一些准备工作
升级 GCC 版本
1:安装 CentOS 软件集和编译工具链
yum install -y centos-release-scl
yum install -y devtoolset-8-toolchain
2:启用新的工具链
scl enable devtoolset-8 bash
完成以上部署了,接下来到正题了!
编译并安装 Python 3.10
1:进入到python页面后先不急进行编译安装先,在你python的目录下找到名为:Modules,的文件夹并进入,然后找到名为Setup,的文件进行编辑
vim Modules/Setup
2:位置大概在212-214行那,将注释取消掉

_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
3:大概就是这三行,取消掉注释,然后保存并退出。
4:运行 Python 配置脚本,配置编译参数
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/bin/openssl --enable-optimizations
5:编译安装python
make && make install
这个编译的时间比较久,长则半小时,慢则10分钟

出现图片这个不是报错!不是报错!不是报错!是运行成功并安装完成了,可以继续接下来的步骤
删除一些临时文件(删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件
make clean
创建软链接以将 Python 3.10 与 python3 和 pip3 关联
1:备份系统默认的 /usr/bin/python 可执行文件
mv /usr/bin/python /usr/bin/python.bak
2:创建软链接,将 /usr/local/python3/bin/python3 关联到 /usr/bin/python3,使 python3 命令可用
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
3:备份系统默认的 /usr/bin/pip 可执行文件
mv /usr/bin/pip /usr/bin/pip.bak
注:系统可能会报找不到这个文件,这个没什么关系不用管!!!!!!!
4: 创建软链接,将 /usr/local/python3/bin/pip3 关联到 /usr/bin/pip3,使 pip3 命令可用
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
5:部署完成接下来验证一下python是否正常
向 /etc/ld.so.conf 文件中添加新的库路径
echo "/usr/local/python3/lib" >> /etc/ld.so.conf
ldconfig -v
覆盖现有Python
mv /usr/bin/python /usr/bin/python2_old
mv /usr/bin/pip /usr/bin/pip2_old
修改软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
修复yum
1:升级后使用yum报错:

2:开启并存之路:
找到yum的路径:
which yum

很明显这个yum的地址在/usr/bin这个路径下名称为:yum
接下来找文件:
1:找到上次用软链接所备份的python2的bak文件,进行重命名:
cd /usr/bin
mv python.bak python2
2:检查重命名:
find / -name python2
编辑yum使用路径和/usr/libexec/urlgrabber-ext-down的指向都为python2:
vim /usr/bin/yum

不会用命令的可以自己手动到usr/bin文件夹下找到名为:yum的文件打开自己修改然后保存效果也是一样的
改完记得输入:wq保存退出
vim /usr/libexec/urlgrabber-ext-down
不会用命令的可以自己手动到usr/libexec文件夹下找到名为:urlgrabber-ext-down****的文件打开自己修改然后保存效果也是一样的
改完记得输入:wq保存退出
然后测试看看yum是不是正常
yum

yum正常了
检查python是否正常
python -V

修复pip
1:echo 备份当前的yum源
mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex
2:echo 新建空的yum源设置目录
mkdir /etc/yum.repos.d
3:echo 下载阿里云的yum源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
4:重建缓存
yum clean all
yum makecache
6修复pip
cd /usr/bin
mv pip pip.bak
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
7:验证pip

都正常,教程结束!!!!
感谢大家的观看,如果可以请多多点赞和关注转发哦
谢谢!!