4

我在这里问了一个关于在 Mint 中安装 M2Crypto python 库的问题。这个问题得到了成功的回答,我能够构建和安装 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

如果有人知道如何解决此错误,请告诉我。

4

3 回答 3

16

两年后 m2crypto0.21.1 中的问题仍然存在,所以这里是给 Ubuntu 用户的说明。如果您不使用virtualenv,则可以通过从 Ubuntu PPA 而不是 pip 安装 m2crypto 来轻松修复它:

sudo pip uninstall m2crypto 
sudo apt-get install python-m2crypto

似乎问题已在 PPA 中解决,但未在项目的存储库中解决。至少它在 Ubuntu 12.04 对我有用。

于 2013-05-27T13:53:06.907 回答
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

编辑:移动到另一个位置

于 2013-02-12T14:39:57.533 回答
2

看起来这是 M2Crypto 0.21.1 中引入的一个错误,这里有一个补丁可以纠正这个问题。

也许您可以尝试安装旧版本的 M2Crypto(如 0.20.1-1.1)或使用patch命令手动应用补丁。

于 2012-05-11T14:45:20.597 回答