Centos7安装python3.11
已于 2025年05月10日 21:39 修改
访问次数:0
在 CentOS 7 上从源码编译安装 OpenSSL 1.1.1 和 Python 3.11.9 全流程方案
下面按步骤给出完整、一致性强的操作流程。全程假设以 root 或具备 sudo 权限的用户执行。
1. 安装构建所需依赖
sudo yum update -y
sudo yum groupinstall "Development Tools" -y
sudo yum install -y \
wget \
zlib-devel \
bzip2-devel \
openssl-devel \
libffi-devel \
sqlite-devel
- Development Tools:包含 gcc、make 等
- zlib-devel:提供 libz,用于 OpenSSL 和 Python 压缩模块
- 额外安装 openssl-devel 仅用于系统 OpenSSL,不影响自编译
2. 编译安装 OpenSSL 1.1.1
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz
tar xzf openssl-1.1.1u.tar.gz
cd openssl-1.1.1u
./config \
--prefix=/usr/local/openssl \
--openssldir=/usr/local/openssl \
shared zlib-dynamic
make -j$(nproc)
make test
make install
配置系统动态链接器
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1.conf
ldconfig
验证:
/usr/local/openssl/bin/openssl version # 应显示 OpenSSL 1.1.1u
ldd /usr/local/openssl/bin/openssl # 确认 libssl.so.1.1、libcrypto.so.1.1、libz.so.1 均已找到
3. 下载并准备 Python 3.11.9 源码
cd /usr/local/src
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
4. 清理旧构建并设置环境
make distclean
export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I/usr/local/openssl/include"
export LDFLAGS="-L/usr/local/openssl/lib"
5. 配置 Python 编译(跳过 PGO 冻结阶段)
./configure \
--prefix=/usr/local/python3.11 \
--with-openssl=/usr/local/openssl
说明 未使用 --enable-optimizations,避免进入 PGO(profile-opt)阶段导致 frozen module 错误。 也可加 --disable-profile 达到同样效果。
6. 编译并安装 Python
make -j$(nproc)
sudo make altinstall
- 使用 make altinstall 不会覆盖系统默认的 python 或 python3 命令
- 安装目录:/usr/local/python3.11/bin/python3.11
7. 设置环境变量与验证
- 加入 PATH(可选,使 python3.11 全局可用) echo 'export PATH=/usr/local/python3.11/bin:$PATH' >> ~/.bashrc source ~/.bashrc
- 验证 Python 与 SSL python3.11 --version # 应输出 Python 3.11.9 python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)" python3.11 -c "import _collections_abc, os; print('OK')"
- 安装 pip 与虚拟环境支持 python3.11 -m ensurepip python3.11 -m pip install --upgrade pip virtualenv
8. 常见问题及排查
| 问题现象 | 排查思路 | 解决方法 |
|---|---|---|
_ssl 模块缺失 | Python 未链接到新 OpenSSL | 确认 ldd _bootstrap_python 和 ldd openssl;确保 LD_LIBRARY_PATH 和 /etc/ld.so.conf.d 包含 /usr/local/openssl/lib |
| frozen_modules 阶段失败 | PGO 冻结模块执行异常 | 取消 PGO:不加 --enable-optimizations 或加 --disable-profile |
找不到 python3.11 | PATH 未添加 | 将 /usr/local/python3.11/bin 加入 PATH |
至此,在 CentOS 7.9 上完成了从源码编译并安装 OpenSSL 1.1.1 和 Python 3.11.9 的全过程,并确保 SSL 模块、压缩模块等均可正常使用。祝使用顺利!
评论(0)