Проблемы с установкой m2crypto с pip на OS X / macOS

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

person user5275692    schedule 08.10.2015    source источник


Ответы (7)


Я хотел более приятный способ без установки вручную и с использованием только Homebrew (который также не связывает openssl по умолчанию). Также требовалось использование pip. Кажется, это работает с новейшей версией m2crypto 0.22.5. Я также однажды протестировал его с m2crypto 0.22.3, и, похоже, он тоже работает. Версия OpenSSL здесь 1.0.2d:

brew install openssl
brew install swig

Наконец, установите m2crypto на macOS в свой Bash. Это длинная команда, но она изменяет переменные среды 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

Кстати. последняя команда также работает, если вы используете, например. требования.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
person therealmarv    schedule 14.10.2015
comment
+1 Мне очень нравится этот метод, я мог использовать его с рекурсивным сценарием установки зависимостей, и он работал как шарм. - person aorcsik; 04.11.2015
comment
проснулся как шарм :-) - person Abhishek Jaiswal; 22.09.2017

благодаря флагам 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
person hjjiang    schedule 17.10.2015

Я только что прошел через много боли, чтобы заставить это работать в Эль-Капитане. Вот что мне пришлось сделать:

Установите 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

Насколько я знаю, он установлен ... Мне все еще нужно провести некоторые тесты.

person joebarbere    schedule 11.10.2015
comment
Кроме того, этот репозиторий кажется более активным: gitlab.com/m2crypto/m2crypto.git I думаю, я попробую установить и эту версию. - person joebarbere; 11.10.2015
comment
Я смог использовать ответ hjjiang сверху с OpenSSL 1.0.2e. - person domoarigato; 13.01.2016
comment
python setup.py build build_ext --openssl=/usr/local/opt/openssl sudo python setup.py install build_ext --openssl=/usr/local/opt/openssl у меня работает - person J.Y Han; 24.03.2016

Получил точную такую ​​же проблему в Ubuntu 18.04 LTS при попытке выполнить

pip install M2Crypto==0.24.0

Сделал следующее, чтобы избавиться от него:

sudo apt-get install swig
sudo apt-get install libssl1.0-dev
person Adriana Bentes    schedule 26.06.2018

Это исправило мою проблему (Python 2.7):

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
person gmm    schedule 30.05.2017

macos v10.15.6
m2crypto v0.35.6
pip v20

Решение от therealmarv работает. Если программа не подействует, вы можете попробовать обновить пакеты варки. Перед решением.

brew update              # update homebrew self
brew upgrade             # upgrade all 
person Euruson    schedule 21.08.2020

sudo apt-get установить python-m2crypto

person gaokun    schedule 19.10.2015
comment
Вопрос помечен как osx-elcapitan, где apt-get скорее всего недоступен. - person anderas; 19.10.2015