2026/1/1 11:36:03
网站建设
项目流程
信息产业部网站备案,长沙建站公司哪有,创新创意产品设计方案,班级优化大师下载安装最新版Python 3.11 pip 无 SSL 模块问题#xff1a;使用 OpenSSL 3.0.13 重新编译 Python注意#xff1a;以下操作最好在测试机试验一遍一、问题原因分析#xff08;为什么 pip 会缺 SSL#xff1f;#xff09;
Python 的 ssl 模块并不是纯 Python 实现#xff0c;而是#xf…Python 3.11 pip 无 SSL 模块问题使用 OpenSSL 3.0.13 重新编译 Python注意以下操作最好在测试机试验一遍一、问题原因分析为什么 pip 会缺 SSLPython 的ssl模块并不是纯 Python 实现而是编译时依赖系统中的OpenSSL如果在./configure阶段找不到openssl/ssl.h或 OpenSSL 版本不兼容那么_ssl.so不会被编译import ssl会失败pip 无法访问 HTTPSPython 3.11 推荐使用 OpenSSL ≥ 1.1.13.0.x 完全支持三、解决思路总览我们的解决方案分为 5 步安装并准备OpenSSL 3.0.13清理 Python 旧的编译残留使用--with-openssl明确指定 OpenSSL 路径验证_ssl模块是否成功生成验证ssl/pip是否可用四、完整自动化编译脚本推荐⚠️ 假设OpenSSL 安装在/usr/local/openssl-3.0.13Python 源码在/usr/local/src/Python-3.11.9 一键编译脚本#!/bin/bashset-eecho 开始重新编译 Python 3.11.9 with OpenSSL 3.0.13 cd/usr/local/src/Python-3.11.9# 清理echo清理之前的编译...sudomakedistclean2/dev/null||true# 设置环境变量exportOPENSSL_DIR/usr/local/openssl-3.0.13exportLDFLAGS-L${OPENSSL_DIR}/lib64exportCPPFLAGS-I${OPENSSL_DIR}/includeexportLD_LIBRARY_PATH${OPENSSL_DIR}/lib64:$LD_LIBRARY_PATHexportPKG_CONFIG_PATH${OPENSSL_DIR}/lib64/pkgconfigecho配置 Python...sudo-E ./configure\--prefix/usr/local/python3.11.9\--with-openssl${OPENSSL_DIR}\--with-openssl-rpathauto\--enable-shared\--enable-loadable-sqlite-extensions\LDFLAGS-Wl,-rpath/usr/local/python3.11.9/lib -L${OPENSSL_DIR}/lib64\CPPFLAGS-I${OPENSSL_DIR}/include# 检查配置结果echoecho 检查 OpenSSL 配置 ifgrep-qchecking for openssl/ssl.h in${OPENSSL_DIR}... yesconfig.log\grep-qchecking whether compiling and linking against OpenSSL works... yesconfig.log;thenecho✓ OpenSSL 配置成功elseecho✗ OpenSSL 配置失败请检查 config.loggrep-A5checking for opensslconfig.log|tail-20exit1fiechoecho开始编译这可能需要几分钟...sudo-Emake-j$(nproc)echoecho检查 _ssl 模块是否生成...SSL_MODULE$(find.-name_ssl*.so|head-1)if[-n$SSL_MODULE];thenecho✓ 找到 SSL 模块:$SSL_MODULEelseecho✗ 未找到 SSL 模块exit1fiechoecho安装 Python...sudomakeinstallechoecho配置系统库和环境...echo/usr/local/python3.11.9/lib|sudotee/etc/ld.so.conf.d/python3.11.confsudoldconfigechoexport PATH/usr/local/python3.11.9/bin:$PATH|sudotee/etc/profile.d/python3.11.shsource/etc/profile.d/python3.11.shechoecho 验证安装 echoPython 版本:/usr/local/python3.11.9/bin/python3.11 --versionechoechoOpenSSL 版本:/usr/local/python3.11.9/bin/python3.11 -cimport ssl; print(ssl.OPENSSL_VERSION)echoecho测试 pip:/usr/local/python3.11.9/bin/pip3.11 --versionechoecho 安装完成 五、关键参数详解非常重要1️⃣--with-openssl--with-openssl/usr/local/openssl-3.0.13 明确告诉 Python用哪个 OpenSSL 编译2️⃣--with-openssl-rpathauto--with-openssl-rpathauto 避免运行时找不到libssl.so比手动改 LD_LIBRARY_PATH 更稳定3️⃣--enable-shared--enable-shared 生成libpython3.11.so 对 embedding、某些 C 扩展很有用六、如何确认 SSL 模块真的生效✅ 1. 查看_ssl模块find/usr/local/python3.11.9 -name_ssl*.so有输出即成功。✅ 2. Python 内部验证python3.11 -cimport ssl; print(ssl.OPENSSL_VERSION)示例输出OpenSSL 3.0.13 30 Jan 2024✅ 3. pip 验证pip3.11installrequests无 HTTPS 报错即可 七、常见错误排查❌ configure 阶段找不到 OpenSSLchecking for openssl/ssl.h... no解决确认 OpenSSL 是源码安装确认${OPENSSL_DIR}/include/openssl/ssl.h存在❌ 运行时报 libssl 找不到error while loading shared libraries: libssl.so.3解决ldd$(whichpython3.11)ldconfig或检查--with-openssl-rpath八、总结✅ 本文通过显式指定 OpenSSL 3.0.13✅ 从编译阶段解决 Python 缺失 SSL 模块的问题✅ 适用于pip 无法使用requests / urllib3 报 SSL 错Python 3.11 源码安装环境一句话总结pip 没 SSL不是 pip 的问题是 Python 编译时 OpenSSL 没配好。