49
pip install m2crypto

生成以下输出:

building 'M2Crypto.__m2crypto' extension
swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
swig -python -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/usr/include -I/usr/include/openssl -includeall -modern -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
SWIG/_m2crypto.i:30: Error: Unable to find 'openssl/opensslv.h'
SWIG/_m2crypto.i:33: Error: Unable to find 'openssl/safestack.h'
SWIG/_evp.i:12: Error: Unable to find 'openssl/opensslconf.h'
SWIG/_ec.i:7: Error: Unable to find 'openssl/opensslconf.h'
error: command 'swig' failed with exit status 1

我跑过:

brew install swig
4

7 回答 7

172

我想要一种更好的方法,而无需手动安装并且仅使用 Homebrew(默认情况下也不链接 openssl)。使用pip也是一项要求。这似乎适用于最新的 m2crypto 0.22.5。我还用 m2crypto 0.22.3 对其进行了一次测试,似乎也可以工作。这里的 OpenSSL 版本是 1.0.2d:

brew install openssl
brew install swig

最后在 macOS 上的Bash中安装 m2crypto 。这是一个很长的命令,但它仅在期间更改 SWIG 和 clang 环境变量,pip install以便 m2crypto 将获得所有 OpenSSL 要求:

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

顺便提一句。如果您使用如 requirements.txt,最后一个命令也有效。

更新:
另外还有鱼壳用户的命令......

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
于 2015-10-14T12:32:09.647 回答
11

多亏了realmarv env标志,我才能使它与openssl / swig的macports版本一起使用,这就是我所做的:

sudo port install openssl
sudo port install swig
sudo port install swig-python

然后使用 realmarv 行,但将 "$(brew --prefix openssl)" 替换为来自 macports 的目录,该目录应为 "/opt/local"

sudo env LDFLAGS="-L/opt/local/lib" \
CFLAGS="-I/opt/local/include" \
SWIG_FEATURES="-cpperraswarn -includeall -I/opt/local/include" \
pip install M2Crypto
于 2015-10-17T07:12:10.523 回答
4

我刚刚在 El Capitan 工作时经历了很多痛苦。这是我必须做的:

安装 OpenSSL(你必须使用旧版本,否则 m2crypto 将无法编译)

curl -O https://www.openssl.org/source/openssl-0.9.8zg.tar.gz
tar -xvzf openssl-0.9.8zg.tar.gz
cd openssl-0.9.8zg
./Configure --prefix=/usr/local darwin64-x86_64-cc
make && make test
sudo make install

安装 m2crypto

git clone https://github.com/martinpaljak/M2Crypto.git    
cd M2Crypto
python setup.py build build_ext --openssl=/usr/local
sudo python setup.py install build_ext --openssl=/usr/local

AFAIK 它已安装...不过我仍然需要进行一些测试。

于 2015-10-11T03:51:12.750 回答
4

在尝试执行时在 Ubuntu 18.04 LTS 上遇到了完全相同的问题

pip install M2Crypto==0.24.0

做了以下事情来摆脱它:

sudo apt-get install swig
sudo apt-get install libssl1.0-dev
于 2018-06-26T11:46:47.487 回答
1

这解决了我的问题(Python 2.7):

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
于 2017-05-30T14:02:25.070 回答
0

macos v10.15.6
m2crypto v0.35.6
pip v20

therealmarv 的解决方案有效,如果程序没有生效,你可以尝试升级你的 brew 包。在解决之前。

brew update              # update homebrew self
brew upgrade             # upgrade all 
于 2020-08-21T01:53:33.190 回答
-11

sudo apt-get install python-m2crypto

于 2015-10-19T03:26:47.003 回答