py3.9环境下程序提示错误ImportError: libssl.so.3
错误日志
ImportError: libssl.so.3: cannot open shared object file: No such file or directory
Traceback (most recent call last):
说明你的 Python 程序(或者底层依赖,如 requests、pyopenssl、urllib3 等)需要使用 OpenSSL 3.x,但系统中缺少对应的动态链接库 libssl.so.3。
env
- centos7.9
- python3.9
解决
背景解释
libssl.so.3 是 OpenSSL 3.0 的动态库链接名,通常安装在以下路径:
/usr/lib64/libssl.so.3/usr/lib/x86_64-linux-gnu/libssl.so.3- 或软链接自
/usr/local/lib
解决方案
1. Debian / Ubuntu 22+
1 | sudo apt update |
可选:更新 ldconfig
1 | sudo ldconfig |
2. CentOS / RHEL / AlmaLinux / Rocky
CentOS 7 默认是 OpenSSL 1.0,不支持 libssl.so.3,需要手动安装 OpenSSL 3:
1 | sudo dnf install -y openssl3 openssl3-libs |
如果没有 dnf,可能需要先启用 EPEL 或升级系统版本。
3. Arch / Manjaro / 基于 pacman 的系统
1 | sudo pacman -Syu openssl |
Arch 默认就使用的是 OpenSSL 3.x,路径是
/usr/lib/libssl.so.3
4.CentOS 7(默认不提供 OpenSSL 3)
方法一:启用第三方源(如 EPEL/ius)
1 | sudo yum install epel-release |
方法二:手动编译 OpenSSL 3(通用)
1 | cd /usr/local/src |
然后添加库路径:
1 | echo "/usr/local/openssl3/lib" | sudo tee /etc/ld.so.conf.d/openssl3.conf |
可设置环境变量给 Python 找:
1 | export LD_LIBRARY_PATH=/usr/local/openssl3/lib:$LD_LIBRARY_PATH |
Python 如何检测 libssl.so.3
Python 检测:
1 | import ssl |
1 | ldd $(which python3) | grep ssl |
输出中应该出现:
libssl.so.3 => /usr/lib/libssl.so.3