python3.9 + openssl基于源码构建
错误日志
1 | ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017' |
意思是:你 Python 的 ssl 模块仍然依赖系统默认 OpenSSL 1.0.2k,而你安装的 urllib3 v2 和 requests 都要求 OpenSSL >=1.1.1。这在 CentOS 7 上是非常典型的问题,因为系统自带的 OpenSSL 太老了。
1. 编译安装 Python/OpenSSL
1.1 先安装 OpenSSL 1.1.1 或 3.x 到独立目录:
1 | cd /usr/local/src |
1.2.重新编译 Python 3.9 并使用这个 OpenSSL:
1 | cd /usr/local/src/Python-3.9.19 |
关键是
--with-openssl=/usr/local/openssl-3,这样 Python 的 ssl 模块就会使用新 OpenSSL。
1.3.配置动态库路径:
1 | echo "/usr/local/openssl-3/lib" > /etc/ld.so.conf.d/openssl-3.conf |
1.4验证:
1 | /usr/local/python3.9/bin/python3.9 -m ssl |
如果没有报错,说明 Python 已经链接到新 OpenSSL。