2017-04-21 110 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