2011-10-14 11 views
29

के खिलाफ संकलन तोड़ता है। मैं पाइथन M2Crypto पैकेज को x86_64 RHEL 6.1 मशीन पर वर्चुअलएन्व में स्थापित करने का प्रयास कर रहा हूं। इस प्रक्रिया को बड़ा घूँट का आह्वान है, जो निम्नलिखित त्रुटि के साथ विफल:M2Crypto venv में स्थापित नहीं होता है, या स्विग __x86_64__ को परिभाषित नहीं करता है जो ओपनएसएसएल

$ 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: 

मैं OpenSSL 1.0.0 RedHat से RPM पैकेज के माध्यम से स्थापित मिल गया है।

/usr/include/openssl/opensslconf.h कि त्रुटि का कारण बनता है का हिस्सा इस तरह दिखता है:

$ echo | gcc -E -dM - | grep x86_64 
#define __x86_64 1 
#define __x86_64__ 1 

लेकिन apparenty नहीं करता है बड़ा घूँट:

#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 

जीसीसी सही चर परिभाषित है टी, क्योंकि यह लाइन असफल है:

swig -python -I/usr/include/python2.6 -I/usr/include -includeall -o \ 
    SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i 

क्या कुछ बदलकर इसे ठीक करने का कोई तरीका है मेरे सिस्टम विन्यास में कुछ? M2Crypto एक वर्चुअलनव में स्थापित एक बड़ी स्क्रिप्ट के हिस्से के रूप में स्थापित हो जाता है जिसे मैं नियंत्रित नहीं करता हूं, इसलिए M2Crypto फ़ाइलों के साथ चारों ओर मकड़ी से बचना एक अच्छी बात होगी।

+0

नहीं है [ 'fedora_setup.sh'] (http://svn.osafoundation.org/m2crypto/trunk/fedora_setup.sh) लेकिन यह साथ आसपास mucking की आवश्यकता है M2Crypto फ़ाइलें। – jfs

+0

@ जेएफ। सेबेस्टियन: इससे परिचित नहीं, क्या आप एक पूर्ण उत्तर में अधिक जानकारी प्रदान कर सकते हैं? –

उत्तर

26

M2Crypto फेडोरा/आरएल/सेंटो रिलीज के साथ समस्याओं को संभालने के लिए fedora_setup.sh स्क्रिप्ट प्रदान करता है, लेकिन निश्चित रूप से, पीपी इसके बारे में कुछ भी नहीं जानता है।

पाइप इंस्टॉल विफल होने के बाद, यह डाउनलोड की गई सामग्री को venv/build/M2Crypto निर्देशिका में छोड़ देता है। ऐसा करते हैं: इस समस्या से बचने के लिए पिप के बजाय

cd <path-to-your-venv>/venv/build/M2Crypto 
chmod u+x fedora_setup.sh 
./fedora_setup.sh build 
./fedora_setup.sh install 

यह मेरी स्थापित प्रक्रिया में काम किया है

+4

आज के रूप में (संस्करण 1.5.6) पीआईपी बिल्ड निर्देशिका को साफ करता है, इसलिए इसमें और कुछ करने के लिए कुछ भी नहीं है। – Peterino

5

आप यह देख और Ubuntu पर हैं रहे हैं, तो का उपयोग apt-get।
apt-get install python-m2crypto

+2

यह वर्चुअल वातावरण के लिए काम नहीं करता है। – Seth

3
sudo yum install m2crypto 

मेरे लिए काम किया इस समस्या को हल करने के लिए।

+0

दुर्भाग्य से, इसने मेरे लिए इस मुद्दे को हल नहीं किया। –

4

भंडार जहां "स्थापित पिप" नहीं है काम करता है:

https://github.com/martinpaljak/M2Crypto

+0

आप इसे आजमा सकते हैं: पीआईपी गिट + https: //github.com/martinpaljak/M2Crypto.git जैसा कि मैं M2Crypto में कुछ बदलावों को लपेटने की योजना बना रहा हूं जो नई रिलीज (ओं) में घूम रहे हैं जो समाप्त हो जाएंगे पीपीआई में, आप इस समय एक ही गिट पेड़ का सुरक्षित रूप से उपयोग कर सकते हैं। –

+1

"पीआईपी इंस्टॉल गिट + github.com/martinpaljak/M2Crypto.git" के साथ विफल रहता है "ValueError: ('अपेक्षित संस्करण spec', 'git + github.com/martinpaljak/M2Crypto.git', 'at', '+ github .com/martinpaljak/M2Crypto.git ') "मेरे उबंटू 10.04 सिस्टम पर। –

+0

प्रारूपण। Github.com –

8

तुम बस swig स्थापित नहीं है।

प्रयास करें:

sudo yum install swig 

और फिर:

sudo easy_install M2crypto 
+0

मैक ओएस एक्स 10.9.4 पर मैंने मैकपॉर्ट्स ('सुडो पोर्ट इंस्टॉल स्विग') का उपयोग करके स्विग स्थापित किया। मुझे वैश्विक स्तर पर पायथन के मार्कअपफेस को भी इंस्टॉल करना पड़ा ('सूडो पाइप इंस्टॉल मार्कअपफेफ'), क्योंकि स्विग इस पर निर्भर करता है ('.../markupsafe/_speedups.so: फ़ाइल खोलने या पढ़ने में त्रुटि ')। – Peterino

+0

मैकपॉर्ट्स की तरह दिखता है हमें स्विग-पायथन ('सुडो पोर्ट इंस्टॉल स्विग-पायथन') स्थापित करने की भी आवश्यकता है। – Peterino

+0

यह मेरे लिए काम करता था जब मुझे उबंटू पर एक ही समस्या थी (हालांकि निश्चित रूप से यम के बजाय एपीटी-गेट का उपयोग करना)। – user3614014

2

मैं centos5.8 में इस समस्या को ठीक करने के लिए एक नया रास्ता मिल गया है, यह प्रयास करें।

vim setup.py

def finalize_options(self): 
    ... 
    self.swig_opts.append('-includeall') # after this line 
    self.swig_opts.append('-I/usr/include/openssl') # add here 

तो python setup.py install काम करेंगे।

9

मैं ऐसा किया था और यह बहुत अच्छी तरह से काम करता है:

env SWIG_FEATURES="-cpperraswarn -includeall -I/usr/include/openssl" pip install M2Crypto 
बेशक

आप के साथ swigg स्थापित करने के लिए है sudo yum install swig

0

फ्रीबीएसडी पर मुझे स्विग (स्पष्ट भाग) भी स्थापित करना पड़ा (sudo pkg install swig द्वारा), लेकिन स्विग 2.0 निष्पादन योग्य का नाम swig2.0 रखा गया था और swig को संभाला गया जिसके परिणामस्वरूप command not found था। समाधान: सिमलिंक बड़ा घूँट 2.0 swig को संभालने के लिए:

ln -s /usr/local/bin/swig2.0 /usr/local/bin/swig 
संबंधित मुद्दे