Centos7安装python3.11




在 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. 设置环境变量与验证

  1. 加入 PATH(可选,使 python3.11 全局可用) echo 'export PATH=/usr/local/python3.11/bin:$PATH' >> ~/.bashrc source ~/.bashrc
  2. 验证 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')"
  3. 安装 pip 与虚拟环境支持 python3.11 -m ensurepip python3.11 -m pip install --upgrade pip virtualenv


8. 常见问题及排查

问题现象排查思路解决方法
_ssl 模块缺失Python 未链接到新 OpenSSL确认 ldd _bootstrap_pythonldd openssl;确保 LD_LIBRARY_PATH/etc/ld.so.conf.d 包含 /usr/local/openssl/lib
frozen_modules 阶段失败PGO 冻结模块执行异常取消 PGO:不加 --enable-optimizations 或加 --disable-profile
找不到 python3.11PATH 未添加/usr/local/python3.11/bin 加入 PATH


至此,在 CentOS 7.9 上完成了从源码编译并安装 OpenSSL 1.1.1 和 Python 3.11.9 的全过程,并确保 SSL 模块、压缩模块等均可正常使用。祝使用顺利!

文章标签:

评论(0)