在 Python 3.10 及之后的版本中,Python 依赖 OpenSSL 来支持 SSL/TLS 功能,而不是 LibreSSL。当编译安装 Python 时遇到 SSL 模块导入失败的问题,通常是因为系统中缺少合适版本的 OpenSSL 库或者配置不正确。下面为你详细介绍如何安装 OpenSSL 1.1.1 及更高版本,并解决 Python 编译安装时 SSL 模块导入失败的问题。
1. 安装 OpenSSL在 Ubuntu/Debian 系统上可以使用以下命令安装 OpenSSL:
sudo apt update sudo apt install libssl-dev
这个命令会安装系统仓库中可用的最新版本的 OpenSSL 开发库,通常是满足 Python 3.10+ 要求的。
在 CentOS/RHEL 系统上使用以下命令安装:
sudo yum install openssl-devel手动编译安装 OpenSSL 1.1.1 或更高版本
如果你需要特定版本的 OpenSSL(如 OpenSSL 1.1.1),可以手动编译安装:
下载 OpenSSL访问 OpenSSL 官方下载页面 下载所需版本的源代码压缩包,或者使用 wget 命令下载:
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=/usr/local/openssl --openssldir=/usr/local/openssl make sudo make install2. 配置环境变量
为了让 Python 编译过程能找到新安装的 OpenSSL,需要设置环境变量:
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"3. 编译安装 Python
在配置 Python 编译选项时,指定 OpenSSL 路径:
./configure --with-openssl=/usr/local/openssl make sudo make install4. 验证 SSL 模块是否正常工作
安装完成后,可以通过以下 Python 代码验证 SSL 模块是否可以正常导入:
import ssl print(ssl.OPENSSL_VERSION)
如果没有报错并能正确输出 OpenSSL 版本信息,说明 SSL 模块已经正常工作。
注意事项手动编译安装 OpenSSL 可能会影响系统上其他依赖 OpenSSL 的程序,因此在操作前最好备份重要数据。不同的系统和版本可能会有细微的差异,上述步骤可以作为通用的参考,具体操作时可能需要根据实际情况进行调整。网友回复