topsapps is a reporting platform for mobile developers that automatically downloads and visualizes sales data, App Store reviews, hourly ranks and more

解決pip安裝M2Crypto失敗的問題

解決pip安裝M2Crypto失敗的問題

M2Crypto 是最完整的為 Python 包裝 OpenSSL 的 RSA,DSA,DH,EC,HMACs,消息摘要,對稱密碼算法(包括AES)的一個庫工具。

而自從 M2Crypto 升級到版本 0.22.5 后,用 pip install M2Crypto 命令來安裝 M2Crypto 時總是會失敗。

沒有升級到此版本之前,使用 pip 安裝則是沒有問題的。下面來找找原因。

系統環境:centos 6.7 x86

失敗關鍵字:swig

失敗現象:

%ignore_pre_1%

這裡有個最為明顯的錯誤提示:

swig error : Unrecognized option -builtin

這說明,系統里安裝的 swig 是沒有 -builtin 這個選項的。來看看系統裝的 swig 版本。

rpm -qa | grep swig

返回:

swig-1.3.40-6.el6.i686

是不是版本比較舊的緣故導致的呢?再來看看 swig 的幫助。

swig -help

看到其中有:

note: &#8216;swig -<lang> -help&#8217; displays options for a specific target language.

因為是涉及到 Python,換個命令來看看。

swig -python -help

返回(節選):

-buildnone      &#8211; Use Py_BuildValue() to obtain Py_none (default in Windows)

注意其中的 options,果然是沒有 -builtin 這個選項的。

好吧很明顯,安裝 M2Crypto 所依賴的 swig 版本升級了,而 centos 默認的 swig 版本過低了。

下面來升級 swig 版本。官網最新版已經到了 3.0.7 了,就編譯安裝此版本的。

%ignore_pre_2%

安裝完成後,再來看一下版本號。

swig -version

返回:

SWIG Version 3.0.7

至此,升級 swig 完成。再來看看新版本的 swig 到底有沒有 -builtin 這個選項。

swig -python -help

返回(節選):

-buildnone      &#8211; Use Py_BuildValue() to obtain Py_none (default in Windows)

-builtin        &#8211; Create new python built-in types, rather than proxy classes, for better performance

果然如此。既然如此,那趕緊繼續用 pip 安裝 M2Crypto 吧。

pip install M2Crypto

Boom,又出錯了。錯誤信息如下:

%ignore_pre_3%

原因是什麼呢?M2Crypto 沒找到 openssl 的頭文件 opensslconf-i386.h

如果是在 x86_64 下安裝的話,會找不到 opensslconf-x86_64.h

怎麼辦呢?看來是不能通過 pip 來安裝了,那我們手動來。

%ignore_pre_4%

好了,這下終於安裝完成了。看看成果:

pip list | grep M2Crypto

返回:

M2Crypto (0.22.5)

後來我去到 M2Crypto 的官網去看了下,已經有人跟作者反映了這個事情。

https://gitlab.com/m2crypto/m2crypto/issues/69

希望作者能在下個版本改進吧。

转载请注明:TopsApps » 解決pip安裝M2Crypto失敗的問題

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址