我问了一个关于在Mint中安装M2Crypto python库的问题here。这个问题得到了成功解答,我能够构建和安装M2Crypto。但是,我无法在Python中使用它。当我尝试导入模块时,出现以下错误:
>>> import M2Crypto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/M2Crypto/__init__.py", line 22, in <module>
import __m2crypto
ImportError: /usr/local/lib/python2.7/dist-packages/M2Crypto/__m2crypto.so: undefined symbol: SSLv2_method
如果有人知道如何解决此错误,请告知我们。
答案 0 :(得分:16)
两年后,m2crypto0.21.1中的问题仍然存在,所以这里是Ubuntu用户的注释。如果您没有使用virtualenv
,可以通过从Ubuntu PPA安装m2crypto而不是pip来轻松修复它:
sudo pip uninstall m2crypto
sudo apt-get install python-m2crypto
似乎问题在PPA中已修复,但在项目的回购中没有。至少它在Ubuntu 12.04上对我有用。
答案 1 :(得分:3)
扩展上述答案:
这是M2Crypto 0.21.1中的错误。这与SSLv2在许多平台上从OpenSSL中删除的事实有关,因为它过于不安全,特别是Debian [1]和Ubuntu。
在编译期间未检测到删除。有一个广泛可用的补丁修复了这个问题。我将其合并到Github上的M2Crypto源代码中。
您可以使用pip直接从存储库安装,如下所示:
pip install -e git+https://github.com/Hypernode/m2crypto#egg=M2Crypto
对于那些想要检查修复此内容的(已发布的)修补程序的人:b432d36
编辑:移动到其他位置
答案 2 :(得分:2)
看起来它是M2Crypto 0.21.1中引入的一个错误,有patch here可以解决问题。
也许您可以尝试安装旧版本的M2Crypto(如0.20.1-1.1)或使用patch命令手动应用补丁。