Python 2.7 和 M2Crypto - 导入错误

Python 2.7 and M2Crypto - ImportError

我正在使用 Python 2.7.10 并安装了 M2Crypto。

像这样导入库:

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 并尝试使用 brew 安装。但我仍然遇到同样的错误。

解决方案

这似乎适用于最新的 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