Centos7 安装Python3.11

在 Centos7 上安装Python3.11时,经常遇到 ssl 模块无法使用 或编译失败的问题,原因是:

Python 3.11 需要 OpenSSL 1.1.1+ ,而 CentOS 7 默认的 OpenSSL 版本是 1.0.2k,太旧。

但直接升级系统自带的 OpenSSL 包会破坏系统稳定性 (如 yum、ssh 可能依赖旧版本)。

正确做法:编译安装 OpenSSL 1.1.1+ 到自定义路径,不覆盖系统默认版本

这样既能满足 Python 3.11 的编译需求,又不会影响系统安全。

解决方案:分步操作(推荐生产环境使用)

步骤 1:安装编译依赖

bash 复制代码
sudo yum update -y
sudo yum groupinstall -y "Development Tools"
sudo yum install -y wget perl-core zlib-devel

步骤 2:编译安装 OpenSSL 1.1.1(不覆盖系统)

1. 下载并解压 OpenSSL 1.1.1(以 1.1.1w 为例)
bash 复制代码
cd /tmp
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
2. 编译安装到 /usr/local/openssl-1.1.1
bash 复制代码
./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlib
make -j $(nproc)
sudo make install

✅ --prefix 指定安装路径,避免污染系统目录

✅ shared 生成动态库,供 Python 链接使用

步骤 3:配置系统库路径(让动态链接器能找到新 OpenSSL)

bash 复制代码
echo '/usr/local/openssl-1.1.1/lib' | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf
sudo ldconfig

✅ 这一步让系统知道新 OpenSSL 库的位置

步骤 4:编译安装 Python 3.11(链接到新 OpenSSL)

1. 下载 Python 3.11 源码
bash 复制代码
cd /tmp
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
tar -xzf Python-3.11.9.tgz
cd Python-3.11.9
2. 配置、编译、安装
bash 复制代码
./configure --prefix=/usr/local/python3.11 \
            --enable-optimizations \
            --with-openssl=/usr/local/openssl-1.1.1
            
make && make install

步骤 4:验证 SSL 模块是否正常

bash 复制代码
/usr/local/python3.11/bin/python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)"

步骤 5:创建全局软链接

bash 复制代码
# 警告:不要在生产服务器上轻易覆盖 python/pip!
sudo ln -sf /usr/local/python3.11/bin/python3.11 /usr/local/bin/python3
sudo ln -sf /usr/local/python3.11/bin/pip3.11    /usr/local/bin/pip3


# 验证软链接是否生效
which python3
# 输出:/usr/local/bin/python3.11

which pip3
# 输出:/usr/local/bin/pip3.11

python3 --version
# 输出:Python 3.11.9

pip3 --version
# 输出:pip 24.x.x ...
相关推荐
129Lab6 天前
BMS 核心算法:SOC 估算从安时积分到 LSTM-UKF 串级融合的 30 年演进(附 Python 实现)
python·算法·lstm·python3.11·bms·soc估算
醇氧12 天前
nohup 后台启动 uvicorn(仅测试 / 临时运行)
linux·运维·网络·python·python3.11
醇氧13 天前
uvicorn 详细介绍
linux·运维·python·python3.11
宿州派大星22 天前
【Python实战】:基于 OpenCV + dlib 的传统换脸术原理与实战
opencv·python3.11·dlib
一技安身1 个月前
【信创】统信UOS 银河麒麟离线部署Python3.11完整方案
android·java·python3.11
刘广睿1 个月前
视频抽帧做图文笔记:帧选择策略与自动化封面挑选
图像处理·音视频·短视频·效率工具·python3.11
刘广睿1 个月前
批量截图与长图拼接:自动化工作流的三种实现方案对比
爬虫·自动化·效率工具·python3.11
我命由我123451 个月前
人脸识别 - 去重时间窗口
java·开发语言·python·学习·java-ee·学习方法·python3.11
AI工具人PM产品经理1 个月前
PIL 脚本批量生成小程序图标实战:零美工做出全套 tabBar
微信小程序·canvas·pil·python3.11·工具脚本
刘广睿1 个月前
断点续传与分片下载是怎么实现的?Range 请求在视频下载中的工程实践
okhttp·ffmpeg·音视频·下载·python3.11