पायथन के विभिन्न संस्करणों का उपयोग करना


21

पृष्ठभूमि :

चूँकि मैं अजगर कार्यक्रमों को विकसित करता हूँ जो विभिन्न अजगर संस्करणों पर चलना चाहिए, इसलिए मैंने अपने कंप्यूटर पर अजगर के विभिन्न संस्करणों को स्थापित किया है।

मैं एफसी 13 का उपयोग कर रहा है, तो यह अजगर में 2.6 पहले से स्थापित के साथ आया था /usr/bin/python2.6और /usr/lib/python2.6

मैं स्रोत से अजगर 2.5 स्थापित है, और चीजों को साफ रखने के लिए, मैं इस्तेमाल किया --prefix=/usrविकल्प है, जो में अजगर स्थापित /usr/bin/python2.5और /usr/lib/python2.5

अब, जब मैं pythonअपना संकेत दिखाता हूं तो मैं संस्करण 2.5 का उपयोग कर रहा हूं। हालाँकि, मैं स्थापित के साथ कुछ समस्याएँ हैं।

पैकेज प्रबंधन :

Easy_install का उपयोग करते हुए, पैकेज हमेशा स्थापित होते हैं /usr/lib/python2.6/site-packages/। मैंने setuptoolsअजगर 2.5 के लिए डाउनलोड किया और इसे स्थापित करने की कोशिश की, लेकिन यह मुझे एक त्रुटि देता है:

/usr/lib/python2.5/site-packages does NOT support .pth files

ऐसा लगता है कि python2.5 मेरे PYTHONPATH में नहीं है। मुझे लगा कि डिफ़ॉल्ट इंस्टॉल खुद PYTHONPATH में जुड़ जाएगा, लेकिन जब मैं echo $PYTHONPATHप्रॉम में लिखता हूं, तो मुझे बस एक खाली लाइन मिलती है।

जवाबों:


20

एकाधिक पायथन संस्करणों को स्थापित करने का अनुशंसित तरीका स्रोत से प्रत्येक को स्थापित करना है - वे खुशी से एक साथ मिलकर काम करेंगे। फिर आप आवश्यक निर्भरता (पाइप या easy_install का उपयोग करके) स्थापित करने के लिए उपयुक्त दुभाषिया के साथ virtualenv का उपयोग कर सकते हैं। स्रोत से कई दुभाषियों की आसान स्थापना की चाल का उपयोग करना है:

sudo make altinstall

अधिक सामान्य "sudo make install" के बजाय। यह संस्करण संख्या को निष्पादन योग्य में जोड़ देगा (इसलिए आपके पास अजगर -२.५, अजगर -२.६, अजगर -३.२ आदि) इस प्रकार पायथन के सिस्टम संस्करण के साथ किसी भी टकराव को रोकता है।


2
Altinstall + virtualenv = अजगर विकास निर्वाण। धन्यवाद!
एलेक्स

13

यह वर्चुअलेनव के लिए एक आदर्श अनुप्रयोग की तरह लगता है , अलग-अलग पायथन वातावरण बनाने के लिए एक बहुत लोकप्रिय उपकरण है। यह पायथन के संस्करण को निर्दिष्ट करने के लिए एक नमूना कमांड है

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv

मुझे नहीं लगता कि virtualenvइस मामले में समाधान है। मेरा जवाब देखिए।
पियोट्र डोब्रोगोस्ट

5

का उपयोग करते हुए easy_install, पैकेज हमेशा स्थापित होते हैं /usr/lib/python2.6/site-packages/

ऐसा इसलिए है क्योंकि डिस्टुटिल्स को स्थापित की जा रही सभी स्क्रिप्ट्स में शेलबैंग लाइन कहते हैं। यदि आप easy_installस्क्रिप्ट को सीधे चलाते हैं तो यह दुभाषिया के साथ निष्पादित हो जाता है जिसे इसके साथ स्थापित किया गया था (शेबंग लाइन के अनुसार)। जो easy_installचलाया जा रहा है वह आपके PATHन होने पर निर्भर करता है PYTHONPATH। यदि आप Python 2.5 उदाहरण में एक पैकेज स्थापित करना चाहते हैं, तो आपको easy_installउपयोग करने के लिए Python दुभाषिया को निर्दिष्ट करना चाहिए :

/usr/bin/python2.5/python easy_install ...

कड़ाई से बोलना virtualenvयहाँ मदद नहीं करता है क्योंकि इसे आधार पायथन के संदर्भ में बनाया जाना चाहिए जो कि चलने के साथ ठीक वैसी ही समस्या है easy_install। यह किस --pythonतर्क के virtualenvलिए है। किसी कारण के easy_installलिए अनुरूप तर्क प्रदान नहीं करता है इसलिए इसे ऊपर दिखाए गए अनुसार विशिष्ट पायथन दुभाषिया के साथ चलाया जाना चाहिए।


यह यहाँ मेरा पहला उत्तर है और मुझे उम्मीद है कि पहला नेक्रोमैंटर बैज भी :)
पिओटर डोब्रोगोस्ट

बहुत अच्छी व्याख्या, धन्यवाद! नेक्रोमैंसर बैज अच्छी कमाई;)
एलेक्स

2

मैं भी फेडोरा 13 का उपयोग कर रहा हूं और PYTHONPATHसेट नहीं किया गया है।

अजगर के भीतर, sys.pathआपको स्क्रिप्ट आयात करने के लिए उपयोग किए जाने वाले रास्तों की एक सूची देगा।

मैं इस बात से परिचित नहीं हूं कि easy_installइसका गंतव्य निर्देशिका कैसे तय करता है, लेकिन मुझे यकीन है कि एक कमांड लाइन तर्क होगा जो आप इसे दे सकते हैं।

यह निर्दिष्ट करने का प्रयास करें easy_installकि आपकी इच्छा के पूर्ण पथ के साथ आपकी आज्ञा से पहले चलने के लिए कौन सा पायथन संस्करण चलना चाहिए।

यह भी जांचें कि easy_installआपके द्वारा इंस्टॉल किए गए एक पायथन संस्करण के भीतर स्क्रिप्ट में बिन में सिम्लिंक है या नहीं।


1

वर्चुअन निश्चित रूप से यहां एक देवता है।

मेरे सेटअप में, मेरे पास पर्यावरण वैरिएबल VIRTUALENV_USE_DISTRIBUTEसेट 1 है, ताकि सेटपूल के बजाय अधिक आधुनिक डिस्ट्रिब्यूट पैकेज का उपयोग किया जाए। मैंने अपने सिस्टम पर पायथन के दो संस्करणों के लिए आभासी वातावरण बनाया है जैसे:

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

मैंने तब तीन उपनाम बनाए .bashrc:

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

इस प्रकार मैं py2Python 2.6 के डिफ़ॉल्ट py3पर स्विच करने और Python 3.2 के डिफ़ॉल्ट पर स्विच करने के लिए उपयोग कर सकता हूं । idleमैं जिस वर्चुअल वातावरण में हूं, उसके लिए IDLE का संस्करण जो भी हो, दर्ज करना उचित होगा।

इन आभासी वातावरणों में से एक में पैकेजों की स्थापना में आमतौर पर केवल एक pip installकमांड शामिल होता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.