+
76
-

回答

在 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 install
2. 配置环境变量

为了让 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 install
4. 验证 SSL 模块是否正常工作

安装完成后,可以通过以下 Python 代码验证 SSL 模块是否可以正常导入:

import ssl
print(ssl.OPENSSL_VERSION)

如果没有报错并能正确输出 OpenSSL 版本信息,说明 SSL 模块已经正常工作。

注意事项手动编译安装 OpenSSL 可能会影响系统上其他依赖 OpenSSL 的程序,因此在操作前最好备份重要数据。不同的系统和版本可能会有细微的差异,上述步骤可以作为通用的参考,具体操作时可能需要根据实际情况进行调整。

网友回复

我知道答案,我要回答