2015-07-11 4 views
8

रिपोर्ट करता है मैंने स्रोत से पायथन 2.7 संकलित करने का प्रयास किया।संकलित पायथन बाइनरी गलत संस्करण

./configure --prefix=/my/local/dir --exec-prefix=/my/local/dir --enable-shared --with-pydebug 
make 
make install 

और which python के उत्पादन /my/local/dir/bin/python, जो सही है:
यहाँ मेरी आज्ञाओं हैं।

लेकिन जब मैं python --version भाग गया मैं Python 2.7.3 बजाय Python 2.7.10 देखते हैं।

पायथन का सिस्टम संस्करण 2.7.3 है। क्या यह पाइथन का सिस्टम संस्करण किसी भी तरह स्थानीय, संकलित संस्करण के खिलाफ स्वयं लिंक हो सकता है? या मुझ से कुछ गलत हो रहा है?

संपादित करें:

./my/local/dir/bin/python --version के उत्पादन में भी Python 2.7.3

संपादित करें 2:

लगता है जैसे कि यह अजगर का सही संस्करण का उत्पादन करेगा अगर मैं --enable-shared ध्वज से छुटकारा पाने के, लेकिन मैं जरूरत काम करने के लिए मेरे अन्य सॉफ्टवेयर के लिए वह ध्वज।

+0

यदि आप '/ my/local/dir/bin/python --version' चलाते हैं तो क्या होता है? यदि यह मामला सही है, तो आपका खोल केवल 'पायथन' के स्थान को कैश कर रहा है, जैसा ओ 11 सी उल्लेख किया गया है। – Laogeodritt

+0

@Logogodritt आउटपुट अभी भी 'पायथन 2.7.3' – mpang

+0

कुछ सिस्टमों पर, 'जिसे' शैल बिल्टिन के बजाए प्रोग्राम के रूप में कार्यान्वित किया गया है और शायद आपको यह नहीं बताएगा कि खोल वास्तव में क्या चल रहा है। जो भी कमांड आपको बताता है कि शेल वास्तव में क्या सोचता है उसे देखने के लिए सबसे अच्छा है। 'Bash' के लिए, वह आदेश 'टाइप' है। अधिक के लिए 'सहायता प्रकार' देखें। –

उत्तर

4

तो this post मेरी समस्या को ठीक करने में सक्षम है। स्रोत के शब्दों में:

आप अपने निर्माण निर्देशिका में से किसी --enable-साझा अजगर निष्पादन योग्य चलाने का प्रयास करते हैं, तो आप, जहां गतिशील लोडर बताने के लिए निर्माण निर्देशिका ही यानी शेयर की गई लाइब्रेरी को खोजने के लिए की आवश्यकता होगी । ऐसा करने का एक तरीका है LD_LIBRARY_PATH पर्यावरण चर का उपयोग करना। अन्यथा, गतिशील लोडर उचित नाम (जैसे libpython2.7.so.1.0) के साथ साझा लाइब्रेरी के लिए मानक पथ, जैसे/usr/local/lib/और/usr/lib/की खोज करेगा। यदि उस पुराने पायथन पहले से ही उस नाम से स्थापित है और यदि एबीआई बहुत ज्यादा नहीं बदला है, तो आप भाग्यशाली हो सकते हैं और यह लोड और रन होगा।

+0

देता है ऐसा लगता है कि यह काम करने के लिए 'निर्यात LD_LIBRARY_PATH = .' आवश्यक है। –

1

यह संभव है आप तो यह नए संस्करण का उपयोग करता है PYTHONHOME वातावरण चर को बदलने की जरूरत:

export PYTHONHOME=/my/local/dir/ 

https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHOME

* यदि आप परिवर्तन स्थाई बनाने के लिए में जोड़ने पर विचार चाहते हैं आपके खोल प्रोफाइल में।

2

याद रखें कि गोले हर बार PATH में देखने के बजाय बाइनरी के स्थान को कैश करते हैं।

तो, यदि आपने पहले उसी शेल में python चलाया है, तो यह अब भी पुराने संस्करण का उपयोग करेगा।

नया खोल शुरू किए बिना इसे ठीक करने के लिए hash -r का उपयोग करें।

+0

मैंने कोशिश की और यह काम नहीं किया। और मैं './my/local/dir/bin/python --version' चलाता हूं और यह अभी भी' पायथन 2.7.3' – mpang

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