问题描述
在运行python脚本的遇到一个异常,提示如下:
python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
表明 Python 2.7 的 _ssl 模块在加载时找不到 sk_pop_free 这个符号。这个问题通常与 OpenSSL 库的版本不匹配有关,尤其是在使用了不同版本的 OpenSSL 编译 Python 和运行时环境中实际加载的 OpenSSL 版本不一致时。
问题分析
-
确认系统OpenSSL 版本
命令: openssl version
-
Python 使用的 OpenSSL 版本:
命令:python -c "import ssl;print(ssl.OPENSSL_VERSION)"
确保这两个版本是兼容的。sk_pop_free 函数在较新的 OpenSSL 版本(如 OpenSSL 1.1.0及以上)中已被弃用或移除,并被其他函数替代(如 OPENSSL_sk_pop_free)。
解决方法
安装兼容版本openssl:
yum install compat-openssl10