64位Debian8系统编译Python3.9时SSL模块编译失败问题求助
问题根因
你遇到的报错本质不是编译阶段找不到openssl头文件/库,而是Python构建完成后的模块导入测试阶段,动态链接器无法定位你自行编译的OpenSSL 1.1.1的动态库。你之前的配置只指定了编译时的库查找路径,没有给生成的二进制/扩展模块写入运行时的库查找路径,因此测试导入_ssl模块失败,触发了版本不兼容的报错。
完整解决步骤
- 第一步:清理之前的构建缓存,避免残留旧配置导致异常
make clean
- 第二步:重新执行configure配置,额外添加rpath参数指定运行时OpenSSL库的查找路径
LDFLAGS="-Wl,-rpath=/root/develop/iQAC/openssl-1.1.1/lib" ./configure --enable-optimizations --prefix=/opt/python3.9 --enable-shared --with-openssl=/root/develop/iQAC/openssl-1.1.1
这里的-Wl,-rpath参数会将OpenSSL的库路径直接写入生成的Python二进制和_ssl扩展模块中,运行时无需依赖系统全局的动态库配置就能找到对应的库文件。
- 第三步:执行编译安装
make -j 3 && make install
- 第四步:验证安装结果
运行以下命令,正常会输出你编译的OpenSSL版本号:
/opt/python3.9/bin/python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
可选补充操作
如果需要系统所有用户都能正常调用这个Python的ssl模块,可以将OpenSSL的库路径加入系统动态库配置:
- 新建配置文件
/etc/ld.so.conf.d/openssl1.1.1.conf,写入以下内容:
/root/develop/iQAC/openssl-1.1.1/lib
- 执行
ldconfig刷新动态库缓存即可。
注意:由于你的OpenSSL安装在/root目录下,其他用户默认没有读取权限,该操作仅在你放宽路径权限后生效。
内容的提问来源于stack exchange,提问作者sergico
相关产品推荐
相关产品推荐

