思路:先装centos7支持的pyhotn3.6版本(不影响自带的python2.7),然后在通过源码安装更高版本,最终将pyhotn3.6替换成高版本的python环境
官方 GCC 版本要求
最低要求:GCC 7.1+(需支持 C11 标准及部分新特性)
推荐版本:GCC 8.1+ 或更高(确保完全兼容 Python 3.11+ 的新功能)
官方 OpenSSL 版本要求
最低版本:OpenSSL 1.1.1(Python 3.11+ 强制要求)
安装依赖关系
sudo yum groupinstall "Development Tools" -y
sudo yum install -y gcc gcc-c++ make zlib-devel libffi-devel \
openssl-devel bzip2-devel xz-devel wget \
sqlite-devel readline-devel tk-devel gdbm-devel \
libnsl2-devel python36-devel
安装高版本gcc
# 添加 SCL 源(阿里云)
cat > /etc/yum.repos.d/CentOS-SCL.repo << 'EOF'
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/x86_64/rh/
enabled=1
gpgcheck=0
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/x86_64/sclo/
enabled=1
gpgcheck=0
EOF
# 清理旧缓存并生成新缓存
yum clean all
yum makecache fast
# 安装 devtoolset-9(包含 gcc9/g++9)
yum install -y centos-release-scl
yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++
# 临时启用新版本gcc
scl enable devtoolset-9 bash
# 直接配置默认使用新版本gcc(可选)
echo "source scl_source enable devtoolset-9" >> ~/.bashrc
source ~/.bashrc
# 验证gcc版本
gcc --version
安装高版本openssl
# 备份原版OpenSSL
sudo cp /usr/bin/openssl /usr/bin/openssl.bak
sudo cp -r /usr/lib64/openssl /usr/lib64/openssl.bak
sudo cp -r /usr/include/openssl /usr/include/openssl.bak
# 下载源码包
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
# 解压并进入目录
tar -zxvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
# 配置安装路径
./config \
--prefix=/opt/openssl-1.1.1t \
--openssldir=/opt/openssl-1.1.1t/etc/ssl \
zlib-dynamic \
-fPIC \
shared
# 编译安装
make -j$(nproc)
sudo make install
# 创建兼容软链接
sudo ln -sf /opt/openssl-1.1.1t/bin/openssl /usr/local/bin/openssl
# 更新动态链接库
echo '/opt/openssl-1.1.1t/lib' | sudo tee /etc/ld.so.conf.d/openssl-1.1.1t.conf
sudo ldconfig -v
# 验证结果
/opt/openssl-1.1.1t/bin/openssl version
# 预期输出:OpenSSL 1.1.1t 7 Feb 2023
which openssl
# 预期路径:/usr/local/bin/openssl
# 以下是回滚方案
# 删除新版链接
sudo rm -f /usr/local/bin/openssl
# 恢复原版文件
sudo cp /usr/bin/openssl.bak /usr/bin/openssl
sudo cp -r /usr/lib64/openssl.bak /usr/lib64/openssl
sudo cp -r /usr/include/openssl.bak /usr/include/openssl
# 清理配置文件
sudo rm /etc/ld.so.conf.d/openssl-1.1.1t.conf
sudo ldconfig
下载和安装python包
# 下载python3.11.1版本
cd /tmp
wget https://mirrors.aliyun.com/python-release/source/Python-3.11.1.tgz
编译安装
tar zxvf Python-3.11.1.tgz
cd Python-3.11.1/
# 编译Python时指定新版OpenSSL
# 设置头文件与库文件路径
export CPPFLAGS="-I/opt/openssl-1.1.1t/include"
export LDFLAGS="-L/opt/openssl-1.1.1t/lib"
# 配置编译参数
./configure \
--prefix=/usr/local/python3.11 \
--with-openssl=/opt/openssl-1.1.1t \
--enable-optimizations
make -j$(nproc) && sudo make install
修改软连接(此处有差异,根据python安装目录创建)
ln -fs /usr/local/python3.11/bin/python3.11 /usr/bin/python3
ln -fs /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3
ln -fs /usr/local/python3.11/bin/python3.11-config /usr/bin/python3-config
# 升级一下pip版本
python3 -m pip install --upgrade pip
查看python版本
# 系统默认的python2
python -V
# 使用新安装的python3
python3 -V
配置pip3阿里镜像源
# 创建.pip文件夹
mkdir ~/.pip
# 创建pip.conf配置文件
vim ~/.pip/pip.conf
# 添加pip源地址为阿里云
[global]
index-url=http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com
验证
pip3 config list
# 预期输出结果
global.index-url='http://mirrors.aliyun.com/pypi/simple'
install.trusted-host='mirrors.aliyun.com'