2012-09-23 10 views
6

मैं स्रोत से पायथन 2.7.3 संकलित करना चाहता हूं। ओएस ओपनएसयूएसई 11.4 x86_64 है, जो पहले ही पाइथन 2.7 प्रदान करता है। मैं नवीनतम सुरक्षा पैच के लिए 2.7.3 का उपयोग करना चाहता हूं, लेकिन यह एक साझा प्रणाली है इसलिए मैं सिस्टम पायथन दुभाषिया के साथ टिंकर नहीं कर सकता।पाइथन 2.7.3 को पाइथन 2.7 के साथ सिस्टम पर स्रोत से संकलित करें .7 पहले से ही

मैं ./configure --prefix=/opt/python --enable-shared का उपयोग करके संकलित करता हूं। कोई कॉन्फ़िगरेशन त्रुटियां नहीं, इसलिए मैं make। फिर कोई त्रुटि नहीं। मैं make install करता हूं (मुझे नहीं लगता कि मुझे make altinstall की आवश्यकता है, क्योंकि /opt/python में यह स्थापना उपसर्ग अभी तक उपयोग में नहीं है)।

जब मैं नई बाइनरी /opt/python/bin/python चलाने की कोशिश करता हूं, पायथन ने 2.7, 2.7.3 के रूप में अपने संस्करण की घोषणा की। इसे सही करने के लिए मुझे मिला एकमात्र तरीका सिस्टम के /usr/lib64/libpython2.7.so.1.0 को स्थानांतरित करना है, और इसे /opt/python/lib/python/libpython2.7.so.1.0 पर सिमलिंक करना है। यह काम करता है और पायथन ने घोषणा की है कि यह 2.7.3 है, लेकिन यह सिस्टम पायथन को तोड़ देता है।

क्या वैसे भी मैं दो को सह-अस्तित्व में प्राप्त कर सकता हूं, उदा। अपने खुद के libpython का उपयोग करने के लिए /opt/python प्राप्त करके? रनटाइम पर LD_LIBRARY_PATH की आपूर्ति के अलावा। क्या संकलन समय समाधान है? धन्यवाद।

+0

आभासी env – Tim

+0

आप की आवश्यकता क्या 'में देखो - सक्षम करें-shared'? मैंने विभिन्न वितरणों पर एक कस्टम पायथन ज़िलियन बार ('--enable- shared' के बिना) बनाया है और इस पायथन का उपयोग करने के लिए आवश्यक एकमात्र चीज है जिसे 'पथ' को संशोधित करना है। –

+0

ध्यान दें कि यदि आप 'सक्षम-साझा' के बिना पाइथन बनाते हैं, तो आपको एक बड़ी निष्पादन योग्य मिलती है जिसमें संपूर्ण साझा लाइब्रेरी होती है। एम्बेडेडिंग के लिए साझा लाइब्रेरी की आवश्यकता है, यही कारण है कि लिनक्स वितरण '--enable-shared' के साथ बनाते हैं। – user4815162342

उत्तर

15

-rpath लिंकर विकल्प का उपयोग LD_LIBRARY_PATH हर बार अजगर शुरू कर दिया है का उपयोग करते हुए क्रम पुस्तकालय पथ निर्दिष्ट करने के लिए होने से बचने के लिए, आप इसे बनाने के समय में निर्दिष्ट कर सकते हैं:

./configure --enable-shared --prefix=/opt/python \ 
      LDFLAGS=-Wl,-rpath=/opt/python/lib 
+1

बिल्कुल सही - बहुत बहुत धन्यवाद! –

संबंधित मुद्दे