You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RHEL上编译支持SSL的Python3?SSL模块无法导入问题求助

问题原因
  1. 对--with-openssl参数的含义理解错误:openssl version -d返回的OPENSSLDIR是OpenSSL存放配置、证书的目录,不是编译时需要的开发库根目录,该参数需要指向包含include/openssl/ssl.h头文件和对应lib动态库目录的父路径。
  2. 手动创建的软链接逻辑错误:将头文件目录直接软链接到/etc/ssl/lib完全不符合编译时的头文件、库文件查找规则,反而会污染系统目录结构。
  3. 系统全局缺少OpenSSL 1.1.1系列的开发组件:从你给出的/usr/lib64查询结果看,没有libssl.so.1.1文件,说明你看到的openssl 1.1.1l大概率是自定义安装在非系统路径下的版本,全局的头文件、动态库仍然是旧的1.0.2k版本,Python编译时无法识别到符合要求的版本。
解决方案

步骤1:清理错误配置

先删除你之前创建的错误软链接,避免影响后续操作:

sudo unlink /etc/ssl/lib

步骤2:安装正确的OpenSSL 1.1开发包

优先使用RHEL官方源提供的包,避免自行编译的兼容性问题:

  • 如果你使用RHEL 8/9 或 CentOS 8/9 版本:
    sudo dnf install openssl-devel -y
    
  • 如果你使用RHEL 7 或 CentOS 7 版本:
    sudo yum install epel-release -y
    sudo yum install openssl11 openssl11-devel -y
    

如果你是自行源码编译安装的OpenSSL 1.1.1l,记录你当时编译时指定的--prefix安装路径(例如/usr/local/openssl11),后续直接使用该路径即可。

步骤3:重新配置Python编译参数

进入Python源码目录,先清理之前的编译缓存:

make clean

根据你的OpenSSL安装情况,选择对应的configure命令:

  • 使用系统官方源安装的OpenSSL开发包:
    ./configure --with-openssl=/usr --with-openssl-rpath=auto --enable-optimizations
    
  • 使用自行编译的OpenSSL(假设安装路径为/usr/local/openssl11):
    ./configure --with-openssl=/usr/local/openssl11 --with-openssl-rpath=auto --enable-optimizations
    

步骤4:编译安装

make -j$(nproc)
sudo make altinstall

注意:使用altinstall而非install,避免覆盖系统默认的Python版本,引发系统组件异常。

验证

安装完成后执行以下命令验证SSL模块是否正常加载、版本是否正确:

python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

内容的提问来源于stack exchange,提问作者neogeek23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:06:02