M2Crypto ne pas installer dans venv, ou rasade ne définit __x 86_64__ qui rompt la compilation contre OpenSSL
Je suis en train d'installer Python M2Crypto paquet dans un virtualenv sur x86_64 RHEL 6.1 de la machine. Ce processus appelle gorgée, qui échoue avec l'erreur suivante:
$ virtualenv -q --no-site-packages venv
$ pip install -E venv M2Crypto==0.20.2
Downloading/unpacking M2Crypto==0.20.2
Downloading M2Crypto-0.20.2.tar.gz (412Kb): 412Kb downloaded
Running setup.py egg_info for package M2Crypto
Installing collected packages: M2Crypto
Running setup.py install for M2Crypto
building 'M2Crypto.__m2crypto' extension
swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
swig -python -I/usr/include/python2.6 -I/usr/include -includeall -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
/usr/include/openssl/opensslconf.h:31: Error: CPP #error ""This openssl-devel package does not work your architecture?"". Use the -cpperraswarn option to continue swig processing.
error: command 'swig' failed with exit status 1
Complete output from command /home/lorin/venv/bin/python -c "import setuptools;__file__='/home/lorin/venv/build/M2Crypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-BFiNtU-record/install-record.txt --install-headers /home/lorin/venv/include/site/python2.6:
J'ai OpenSSL 1.0.0 installé via les paquetages RPM de RedHat.
La partie de /usr/include/openssl/opensslconf.h qui provoque l'erreur ressemble à ceci:
#if defined(__i386__)
#include "opensslconf-i386.h"
#elif defined(__ia64__)
#include "opensslconf-ia64.h"
#elif defined(__powerpc64__)
#include "opensslconf-ppc64.h"
#elif defined(__powerpc__)
#include "opensslconf-ppc.h"
#elif defined(__s390x__)
#include "opensslconf-s390x.h"
#elif defined(__s390__)
#include "opensslconf-s390.h"
#elif defined(__sparc__) && defined(__arch64__)
#include "opensslconf-sparc64.h"
#elif defined(__sparc__)
#include "opensslconf-sparc.h"
#elif defined(__x86_64__)
#include "opensslconf-x86_64.h"
#else
#error "This openssl-devel package does not work your architecture?"
#endif
gcc a le droit variable définie:
$ echo | gcc -E -dM - | grep x86_64
#define __x86_64 1
#define __x86_64__ 1
Mais apparenty rasade ne l'est pas, puisque c'est la ligne qui ne fonctionne pas:
swig -python -I/usr/include/python2.6 -I/usr/include -includeall -o \
SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
Est-il un moyen de résoudre ce problème en changeant quelque chose dans la configuration de mon système? M2Crypto est installé dans un virtualenv dans le cadre d'un script je n'ai pas le contrôle, afin d'éviter de déblayage autour de avec la M2Crypto fichiers serait une bonne chose.
- Il y a
fedora_setup.sh
mais il nécessite un nettoyage autour de la M2Crypto fichiers. - Pas familier avec cela, pouvez-vous fournir plus de détails dans une réponse complète?
Vous devez vous connecter pour publier un commentaire.
M2Crypto fournit un fedora_setup.sh script pour gérer les problèmes avec Fedora/RL/CentOs versions, mais pip, bien sûr, ne sait rien à ce sujet.
Après le pip install échoue, il quitte le téléchargé des trucs dans le venv/build/M2Crypto répertoire. ce faire:
Cela a fonctionné dans mon processus d'installation
Vous n'avez tout simplement pas
swig
installé.Essayer:
Et puis:
sudo port install swig
). J'ai également eu à installer Python markupsafe à l'échelle mondiale (sudo pip install markupsafe
), parce que rasade en dépend (.../markupsafe/_speedups.so: Error opening or reading file
).sudo port install swig-python
).Je l'ai fait et ça fonctionne très bien :
Bien sûr, vous devez installer swigg avec
sudo yum install swig
avantSi vous voyez ce et sont sur Ubuntu, utilisez apt-get au lieu de pip pour éviter ce problème.
apt-get install python-m2crypto
J'ai eu un problème similaire où
/usr/include/openssl
manquaitopensslconf.h
(source https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733644#10)
Il y a un référentiel où "pip install" fonctionne:
https://github.com/martinpaljak/M2Crypto
a fonctionné pour moi pour contourner ce problème.
J'ai trouvé une nouvelle façon de résoudre ce problème dans centos5.8, de l'essayer.
vim setup.py
puis
python setup.py install
fonctionne.Sur FreeBSD j'ai dû installer Swig (la partie évidente) ainsi (par
sudo pkg install swig
), mais Rasade 2.0 exécutable a été nomméswig2.0
et poignéeswig
entraînécommand not found
. Solution: lien symbolique Rasade 2.0 pour gérerswig
: