百度ERNIE-NAVA:音画同步生成的跨模态共生建模
2026/6/22 8:44:10
注意:以下操作最好在测试机试验一遍
Python 的ssl模块并不是纯 Python 实现,而是:
编译时依赖系统中的OpenSSL
如果在./configure阶段:
openssl/ssl.h那么:
_ssl.so不会被编译import ssl会失败📌Python 3.11 推荐使用 OpenSSL ≥ 1.1.1(3.0.x 完全支持)
我们的解决方案分为 5 步:
--with-openssl明确指定 OpenSSL 路径_ssl模块是否成功生成ssl/pip是否可用⚠️ 假设:
- OpenSSL 安装在:
/usr/local/openssl-3.0.13- Python 源码在:
/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.13"exportLDFLAGS="-L${OPENSSL_DIR}/lib64"exportCPPFLAGS="-I${OPENSSL_DIR}/include"exportLD_LIBRARY_PATH="${OPENSSL_DIR}/lib64:$LD_LIBRARY_PATH"exportPKG_CONFIG_PATH="${OPENSSL_DIR}/lib64/pkgconfig"echo"配置 Python..."sudo-E ./configure\--prefix=/usr/local/python3.11.9\--with-openssl=${OPENSSL_DIR}\--with-openssl-rpath=auto\--enable-shared\--enable-loadable-sqlite-extensions\LDFLAGS="-Wl,-rpath=/usr/local/python3.11.9/lib -L${OPENSSL_DIR}/lib64"\CPPFLAGS="-I${OPENSSL_DIR}/include"# 检查配置结果echo""echo"=== 检查 OpenSSL 配置 ==="ifgrep-q"checking for openssl/ssl.h in${OPENSSL_DIR}... yes"config.log&&\grep-q"checking whether compiling and linking against OpenSSL works... yes"config.log;thenecho"✓ OpenSSL 配置成功"elseecho"✗ OpenSSL 配置失败,请检查 config.log"grep-A5"checking for openssl"config.log|tail-20exit1fiecho""echo"开始编译(这可能需要几分钟)..."sudo-Emake-j$(nproc)echo""echo"检查 _ssl 模块是否生成..."SSL_MODULE=$(find.-name"_ssl*.so"|head-1)if[-n"$SSL_MODULE"];thenecho"✓ 找到 SSL 模块:$SSL_MODULE"elseecho"✗ 未找到 SSL 模块"exit1fiecho""echo"安装 Python..."sudomakeinstallecho""echo"配置系统库和环境..."echo"/usr/local/python3.11.9/lib"|sudotee/etc/ld.so.conf.d/python3.11.confsudoldconfigecho'export PATH=/usr/local/python3.11.9/bin:$PATH'|sudotee/etc/profile.d/python3.11.shsource/etc/profile.d/python3.11.shecho""echo"=== 验证安装 ==="echo"Python 版本:"/usr/local/python3.11.9/bin/python3.11 --versionecho""echo"OpenSSL 版本:"/usr/local/python3.11.9/bin/python3.11 -c"import ssl; print(ssl.OPENSSL_VERSION)"echo""echo"测试 pip:"/usr/local/python3.11.9/bin/pip3.11 --versionecho""echo"=== 安装完成 ==="--with-openssl--with-openssl=/usr/local/openssl-3.0.13👉 明确告诉 Python:用哪个 OpenSSL 编译
--with-openssl-rpath=auto--with-openssl-rpath=auto👉 避免运行时找不到libssl.so
👉比手动改 LD_LIBRARY_PATH 更稳定
--enable-shared--enable-shared👉 生成libpython3.11.so
👉 对 embedding、某些 C 扩展很有用
_ssl模块find/usr/local/python3.11.9 -name"_ssl*.so"有输出即成功。
python3.11 -c"import ssl; print(ssl.OPENSSL_VERSION)"示例输出:
OpenSSL 3.0.13 30 Jan 2024pip3.11installrequests无 HTTPS 报错即可 🎉
checking for openssl/ssl.h... no解决:
${OPENSSL_DIR}/include/openssl/ssl.h存在error while loading shared libraries: libssl.so.3解决:
ldd$(whichpython3.11)ldconfig或检查--with-openssl-rpath
✅ 本文通过显式指定 OpenSSL 3.0.13
✅ 从编译阶段解决 Python 缺失 SSL 模块的问题
✅ 适用于:
一句话总结:
pip 没 SSL,不是 pip 的问题,是 Python 编译时 OpenSSL 没配好。