安装M2Crypto后导入出现undefined symbol: sslv3_method错误求助
解决M2Crypto导入时出现
undefined symbol: sslv3_method的错误 这个问题我之前帮别人排查过,本质是M2Crypto版本与系统OpenSSL版本不兼容导致的:高版本的OpenSSL(1.1.0及以上)已经移除了不安全的SSLV3协议相关的sslv3_method函数,但你安装的旧版M2Crypto仍然在调用这个函数,所以抛出了符号未定义的错误。
下面是具体的解决步骤:
第一步:确认系统OpenSSL版本
先在终端执行命令查看当前OpenSSL版本:
openssl version
如果输出的版本是1.1.0或更高,那就能确定是版本兼容问题。
第二步:卸载旧版M2Crypto
先把现有的不兼容版本卸载:
pip uninstall -y M2Crypto
第三步:安装兼容OpenSSL 1.1+的M2Crypto版本
针对Python 2.7,你可以安装支持OpenSSL 1.1的M2Crypto版本(比如0.38.0及以上,这个版本仍支持Python 2.7):
pip install M2Crypto>=0.38.0
安装完成后,再尝试导入M2Crypto:
import M2Crypto
应该就能正常导入了。
备选方案(不推荐)
如果你因为某些原因无法升级M2Crypto,也可以降级系统的OpenSSL到1.0.x版本,但不建议这么做——因为SSLV3存在严重安全漏洞,高版本OpenSSL移除它是出于安全考量,降级会带来安全风险。
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

