2015-10-08 58 views
37
pip install m2crypto 

生成以下的输出:麻烦与OS PIP安装m2crypto X/MacOS的

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 

回答

131

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

brew install openssl 
brew install swig 

猛砸最后安装在MacOS m2crypto。这是一个很长的命令,但它仅在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 

BTW。如果您使用例如最后一个命令一个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 
+1

+1真的很喜欢这种方法,我可以在递归依赖安装脚本中使用它,它的工作方式就像一个魅力一样。 – aorcsik

+0

非常感谢,完美无瑕。 –

+1

这太棒了 - 用于安装非常感谢,非常感谢! – ghukill

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它被安装...我仍然必须做一些测试。

+0

此外,该回购似乎更加活跃:https://开头gitlab。 com/m2crypto/m2crypto.git 我想我会尝试安装此版本。 – joebarbere

+0

我能够使用hjjiang从上面的答案OpenSSL 1.0.2e – domoarrigato

+2

'python setup.py build build_ext --openssl =/usr/local/opt/openssl' 'sudo python setup。py安装build_ext --openssl =/usr/local/opt/openssl' 适合我 –

9

感谢therealmarv ENV标志我能得到这个与MacPorts的版本的OpenSSL /痛饮的工作,这是我做过什么:

​​

然后用therealmarv线,但替换“$(BREW --prefix的OpenSSL)”从MacPorts的迪尔应该是“/选择/本地”

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

确认这对我有用 - 谢谢! – domoarrigato

-10

sudo易于得到安装python-m2crypto

+1

这个问题被标记为'osx-elcapitan',其中'apt-get'最有可能不可用。 – anderas

1

这个固定我的问题(Python 2.7版):

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