无法在OS X / macOS上使用pip安装m2crypto

时间:2015-10-08 01:58:35

标签: macos pip macos-sierra osx-elcapitan 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

7 个答案:

答案 0 :(得分:153)

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

brew install openssl
brew install swig

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

更新:
另外还有 fish shell 用户的命令......

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 :(得分:9)

感谢therealmarv env标志我能够使用openssl / swig的macports版本,这就是我所做的:

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

然后使用therealmarv行,但替换" $(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

答案 2 :(得分: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 ......我仍然需要做一些测试。

答案 3 :(得分:3)

在尝试执行时,在Ubuntu 18.04 LTS上完全符合same issue

pip install M2Crypto==0.24.0

执行以下操作来摆脱它:

sudo apt-get install swig
sudo apt-get install libssl1.0-dev

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

macos v10.15.6
m2crypto v0.35.6
点v20

therealmarv解决方案有效, 如果该程序没有生效,则可以尝试升级您的冲泡软件包。解决之前。

brew update              # update homebrew self
brew upgrade             # upgrade all 

答案 6 :(得分:-10)

sudo apt-get install python-m2crypto