Проблема установки 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
6 ответов
Я хотел более приятный способ без установки вручную и использования только 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
Кстати. последняя команда также работает, если вы используете, например, require.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
Благодаря italmarv env flags я смог заставить это работать с версией macports openssl/swig, вот что я сделал:
sudo port install openssl
sudo port install swig
sudo port install swig-python
затем используйте строки alalv, но замените "$(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
Я только что пережил много боли, получая эту работу в Эль-Капитане. Вот что я должен был сделать:
Установите 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 это установлено... Я все еще должен сделать некоторое тестирование все же.
Получил точно такую же проблему на Ubuntu 18.04 LTS, пытаясь выполнить
pip install M2Crypto==0.24.0
Сделал следующее, чтобы избавиться от него:
sudo apt-get install swig
sudo apt-get install libssl1.0-dev
Это исправило мою проблему (Python 2.7):
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
Macos v10.15.6
m2crypto v0.35.6
pip v20
Решение от therealmarv работает. Если программа не работает, вы можете попробовать обновить свои пакеты brew. До решения.
brew update # update homebrew self
brew upgrade # upgrade all