2017-04-21 70 views
0

我使用Python 2.7.10并安装了M2Crypto。Python 2.7和M2Crypto - ImportError

导入库这样的:

from M2Crypto import RSA 

但在运行python脚本时,我得到这个错误:

ImportError: dlopen(/Users/shuma/Desktop/Projects/adastocks/vir_test/vir_test/lib/python2.7/site-packages/M2Crypto/_m2crypto.so, 2): Symbol not found: _ASN1_TIME_set_string 
    Referenced from: /Users/shuma/Desktop/Projects/adastocks/vir_test/vir_test/lib/python2.7/site-packages/M2Crypto/_m2crypto.so 
    Expected in: flat namespace 

我使用MacOSX的10.11.5,我试着用冲泡安装。但我仍然得到同样的错误。

回答

0

解决方案

这似乎与最新m2crypto 0.22.5工作。我还用m2crypto 0.22.3测试过一次,似乎也可以工作。这里的OpenSSL版本是1.0.2d:

最后在我的Bash上安装El Capitan的m2crypto。这是一个很长的命令,但它仅在pip安装期间更改SWIG和clang环境变量,以便m2crypto将获得所有OpenSSL要求,并且因为我正在使用虚拟python环境,所以我必须清除dir缓存。

env LDFLAGS="-L$(brew --prefix openssl)/lib" \ 
    CFLAGS="-I$(brew --prefix openssl)/include" \ 
    SWIG_FEATURES="-cpperraswarn -includeall -I$(brew --prefix openssl)/include" \ 
pip install m2crypto --no-cache-dir 
+0

使用明确的''env''使事情变得有点明显,这是很好的,但在其他方面,这正是在[''INSTALL.rst''(https://gitlab.com/ m2crypto/m2crypto/blob/master/INSTALL.rst#macosx),不是吗? – mcepl

+0

是的,但对我来说,我必须清理dir缓存并在env中运行。 – SHUMAcupcake