在OS X / macOS上用pip安装m2crypto时遇到麻烦

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 

我想要一个更好的方式,而不需要手动安装,只使用Homebrew(默认情况下也不会链接到openssl)。 还使用pip是一个要求。 这似乎与最新的m2crypto 0.22.5。 我也用m2crypto 0.22.3testing一次,似乎也工作。 这里的OpenSSL版本是1.0.2d:

 brew install openssl brew install swig 

最后在你的Bash上的macOS上安装m2crypto。 这是一个很长的命令,但是它只会在pip install期间更改SWIG和clang环境variables,以便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 

感谢therealmarv env标志我能够得到这个与openssl / swig的macports版本,这是我做的:

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

然后使用therealmarv行,但用macports应该是“/ opt / local”的目录replace“$(brew –prefix openssl)”

 sudo env LDFLAGS="-L/opt/local/lib" \ CFLAGS="-I/opt/local/include" \ SWIG_FEATURES="-cpperraswarn -includeall -I/opt/local/include" \ pip install M2Crypto 

在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它被安装…我仍然需要做一些testing。

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

 export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 

sudo apt-get安装python-m2crypto

Interesting Posts