【问题标题】:Python 2.7 and M2Crypto - ImportErrorPython 2.7 和 M2Crypto - ImportError
【发布时间】:2017-04-21 09:03:13
【问题描述】:

我正在使用 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 进行安装。但我仍然得到同样的错误。

【问题讨论】:

    标签: python python-2.7 m2crypto


    【解决方案1】:

    解决方案

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

    【讨论】:

    • 使用显式 env 让事情变得更明显,这很好,但否则这正是 INSTALL.rst 中的内容,不是吗?
    猜你喜欢
    • 2012-03-06
    • 2012-11-25
    • 2017-04-15
    • 2017-02-01
    • 1970-01-01
    • 2018-11-24
    • 2019-04-03
    • 2016-11-28
    相关资源
    最近更新 更多