web-dev-qa-db-fra.com

Problème d'installation de m2crypto avec pip sur OS X / macOS

pip install m2crypto

Génère la sortie suivante:

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

J'ai couru:

brew install swig
46
user5275692

Je voulais une meilleure façon sans installer manuellement et en utilisant uniquement Homebrew (qui ne lie pas non plus openssl par défaut). L'utilisation de pip était également obligatoire. Cela semble fonctionner avec le dernier m2crypto 0.22.5. Je l'ai également testé une fois avec m2crypto 0.22.3 et semble également fonctionner. La version d'OpenSSL ici est 1.0.2d:

brew install openssl
brew install swig

Enfin, installez m2crypto sur macOS dans votre Bash. C'est une commande longue mais elle ne modifie les variables d'environnement SWIG et clang que pendant pip install pour que m2crypto obtienne toutes les exigences d'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. la dernière commande fonctionne également si vous utilisez par exemple un requirements.txt.

Mise à jour:
Supplémentaire aussi la commande pour fish Shell utilisateurs ...

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
155
therealmarv

grâce aux drapeaux env de therealmarv j'ai pu faire fonctionner cela avec la version macports d'openssl/swig, voici ce que j'ai fait:

Sudo port install openssl
Sudo port install swig
Sudo port install swig-python

puis utilisez les lignes therealmarv mais remplacez "$ (brew --prefix openssl)" par le répertoire de macports qui devrait être "/ 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
9
hjjiang

Je viens de traverser beaucoup de peine pour que cela fonctionne à El Capitan. Voici ce que je devais faire:

Installez OpenSSL (vous devez utiliser une ancienne version, m2crypto ne compilera pas autrement)

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

Installer 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 il est installé ... Je dois quand même faire quelques tests.

4
joebarbere

Got exact même problème sur Ubuntu 18.04 LTS, tout en essayant d'exécuter

pip install M2Crypto==0.24.0

A fait ce qui suit pour s'en débarrasser:

Sudo apt-get install swig
Sudo apt-get install libssl1.0-dev
3
Adriana Bentes

Cela a résolu mon problème (Python 2.7):

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