我在这里问了一个关于在Mint中安装M2Crypto python库的问题。 这个问题被成功回答,我能够build立和安装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
如果有人知道如何解决这个错误,请让我知道。
它看起来像是在M2Crypto 0.21.1中引入的一个bug,这里有一个补丁来纠正这个问题。
也许你可以尝试安装一个老版本的M2Crypto(比如0.20.1-1.1)或者用patch命令手动应用这个补丁 。
两年后,m2crypto0.21.1中的问题仍然存在,所以这里是Ubuntu用户的一个说明。 如果您不使用virtualenv
,则可以通过从Ubuntu PPA安装m2crypto而非pip来轻松修复:
sudo pip uninstall m2crypto sudo apt-get install python-m2crypto
似乎这个问题已经在PPA中解决了,但是在项目的回购中却没有解决。 至少它在Ubuntu 12.04中为我工作。
为了扩大上面的答案:
这是M2Crypto 0.21.1中的一个错误。 这与SSLv2在许多平台上被OpenSSL删除的事实有关,因为它太不安全,特别是Debian和Ubuntu。
在编译期间没有检测到删除。 有一个广泛可用的补丁修复了这个问题。 我将它并入了Github上的M2Crypto源代码。
您可以使用pip直接从存储库安装,如下所示:
pip install -e git+https://github.com/Hypernode/m2crypto#egg=M2Crypto
对于那些想要检查修复了这个(很多已发布的)修补程序的人: b432d36
编辑:移动到另一个位置