2013-03-15 12 views
6

में पाइथन ऑटो-एलाइज्ड होने के नाते मैं अपने सिस्टम पर डिफ़ॉल्ट पायथन होने के लिए पायथन 2.7 सेट करने के साथ संघर्ष कर रहा हूं।मैक ओएस एक्स शेर

पायथन 2.6 मेरे ओएस के साथ आया, और मैंने बाद में 2.7 (स्रोत से) स्थापित किया है और यह मेरा डिफ़ॉल्ट संस्करण बनाने की कोशिश कर रहा है।

एक बिंदु पर यह सुझाव दिया गया था कि मैं एक पैकेज मैनेजर (मैकपोर्ट्स/फ़िंक/होमब्रू) का प्रयास करता हूं और मैंने किया, और मुझे लगता है कि यह एक बुरा विचार हो सकता है।

समग्र मुद्दा यह है कि, कहीं भी, किसी भी तरह, किसी भी तरह, पाइथन 2.6 हर बार मेरा खोल शुरू होने पर मेरे डिफ़ॉल्ट पायथन के रूप में ऑटो-एलाइज्ड हो रहा है। मैं अपने .profile और .bashrc के माध्यम से चला गया है, और कोई आदेश नहीं है जो उन्हें उपनाम कर सकता है।

मैंने पहले /Library/Frameworks/Python.framework/Versions/2.7/bin को देखने के लिए अपना डिफ़ॉल्ट पथ भी सेट किया है। मैंने इस SO post और इस SU post में कोई फायदा नहीं होने के सुझावों का भी प्रयास किया है। मुझे 2.7 का उपयोग अपने डिफ़ॉल्ट के रूप में करने की ज़रूरत है, क्योंकि मेरे पास स्क्रिप्ट हैं जो Argparse पर निर्भर करती हैं और इसी तरह।

इसके अलावा, मेरे/usr/bin/अजगर कुछ भी करने के लिए एलियास नहीं है, और/usr/स्थानीय/bin है: /usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

+0

एक साइड नोट के रूप में: क्या आपने 'virtualenv' का उपयोग करने पर विचार किया है? आप जो भी पाइथन इंस्टॉलेशन (ऐप्पल या अन्यथा) चाहते हैं, उसके आस-पास के कई वर्चुअल वातावरण सेट अप कर सकते हैं, और स्पष्ट रूप से उस व्यक्ति को चुन सकते हैं जिसे आप किसी भी समय सक्रिय करना चाहते हैं। – abarnert

+0

मैं गंभीरता से विचार करना शुरू कर रहा हूं। – espais

+0

'virtualenv' वास्तव में अच्छा है। 3.3 में मानक पुस्तकालय में जोड़ा गया एक कारण है।एक बार जब आप ऐसी परिस्थिति में हों जहां आपको अपने पर्यावरण पर ध्यान देना होगा (और वास्तव में, एक बार जब आप अपने सिस्टम के डिफ़ॉल्ट पायथन 2.x का उपयोग नहीं कर रहे हैं, खासकर यदि आप एक ही 2.x संस्करण की दूसरी प्रति इंस्टॉल कर रहे हैं आपके पास पहले से ही था, आप हैं), आप इसे स्पष्ट और आसान बनाने के लिए भी कर सकते हैं। – abarnert

उत्तर

5

मैं अजगर 2.7 स्थापित करने के साथ संघर्ष कर रहा है पर डिफ़ॉल्ट अजगर होने की मेरी प्रणाली।

यह पहले से ही था। जब आप एक स्पष्ट शेर बॉक्स लेते हैं, और python को खोल में टाइप करते हैं, तो यह /usr/bin/python चलाता है, जो पायथन 2.7.2 है।

अजगर 2.6 मेरी ओएस के साथ आया था

शेर 2.5, 2.6, और 2.7, और एक छिपे हुए 2.3 के साथ आता है।

वे /System/Library/Frameworks/Python.framework/Versions में स्थापित हैं। 2.3 के अलावा सभी में सिम्लिंक /usr/bin/python2.x है, एक स्वच्छ प्रणाली पर, उस नाम के साथ आपके पैथ पर पहली बात होगी, इसलिए python2.6 टाइपिंग 2.6 चलाएगी, जबकि python2.7 2.7 चलाएगा।

और /usr/bin/python पर एक विशेष रैपर भी है जो डिफ़ॉल्ट रूप से 2.7 चलाता है, लेकिन आप इसे VERSIONER_PYTHON_VERSION या com.apple.versioner.python वरीयता के साथ कॉन्फ़िगर कर सकते हैं।

मैंने बाद में 2.7 (स्रोत से) स्थापित किया है और यह मेरा डिफ़ॉल्ट संस्करण बनाने की कोशिश कर रहा है।

"डिफ़ॉल्ट संस्करण" से आपका क्या मतलब है? क्या आप चाहते हैं कि जब आप python को ताजा टर्मिनल खोल में टाइप करते हैं, या #!/usr/bin/env python को स्क्रिप्ट में शेबैंग लाइन के रूप में उपयोग करते हैं, तो क्या आप इसे चलाने के लिए चाहते हैं?

ऐसा करने का सबसे आसान तरीका यह है कि आपने जो भी निर्देशिका स्थापित की है उसे PATH पर/usr/bin से अधिक में स्थापित किया गया है।

यदि आपने "फ्रेमवर्क बिल्ड" (जो आपके पास होना चाहिए) स्थापित किया है, तो एक निर्देशिका /Library/Frameworks/Python.framework/Versions/2.7/bin होगी जिसे आप अपने पैथ के शीर्ष पर रख सकते हैं। यह/usr/local और/usr के क्रम को प्रभावित करने से बचाता है, और इसका मतलब है कि आप किसी भी स्क्रिप्ट का उपयोग कर सकते हैं जो Python setup.py स्थापनाओं द्वारा/usr/local/bin में symlink किए बिना स्थापित हो।

यह महत्वपूर्ण है क्योंकि एप्पल के अजगर/usr/स्थानीय/बिन-उदाहरण के लिए में स्क्रिप्ट स्थापित हो जाएगा, यदि आप /usr/bin/easy_install-2.7 pip, आप के लिए /usr/local/bin/pip और /usr/local/bin/pip-2.7 . If you also install pip` मिल जाएगा अपने कस्टम-निर्मित पायथन, आप इसे एक ही स्थान पर नहीं दिखाना चाहते हैं; अन्यथा, जो भी आपने इंस्टॉल किया है वह दूसरे को बदल देता है।

आप एक रूपरेखा का निर्माण स्थापित नहीं हुआ है, या आप इसे वैसे भी /usr/local/bin लिए स्क्रिप्ट इंस्टॉल करना कॉन्फ़िगर कर दिया है, या आप/usr/स्थानीय के आदेश को प्रभावित करना चाहते हैं , बस के शीर्ष पर /usr/local/bin डाल अपने पथ।

किसी भी तरह, अजगर 2.6 मेरा डिफ़ॉल्ट अजगर के रूप में स्वत: एलियास हो रही है हर बार मेरी खोल

शुरू होता है ऑटो-aliased करके आप पता लगा एक बैश alias है मतलब है? जैसा कि आप alias टाइप करते हैं और यह आपको python सहित चीजों की एक सूची देता है?

यदि ऐसा है, तो आपको इसे ठीक करने की आवश्यकता है, इसके शीर्ष पर एक और हैक ढेर करने की कोशिश न करें जो इसके प्रभाव को पूर्ववत करें।

यदि ~/.* में कोई उपनाम आदेश नहीं है, तो /etc/ देखें। यदि आप grep -r alias /etc, तो यह आपको चीजों की एक बड़ी सूची देगा, और आपको मेल उपनाम और अपाचे उपनामों को छोड़ना होगा (और संभवतः कुछ अनुमति stderr को आउटपुट से इनकार कर दिया जाएगा), लेकिन उसके बाद, कोई शेल उपनाम नहीं होना चाहिए।

इसके अलावा, मेरे/usr/bin/अजगर कुछ भी करने के लिए एलियास नहीं है,

यह बनाता है मुझे लगता है कि आप अलियासिंग और symlinking भ्रमित कर रहे हैं। वे एक ही बात नहीं हैं। कौन सी समस्या है? आपको यह जानना होगा कि इसे ठीक करने से पहले क्या गलत है।

तो, यह प्रयास करें:

which python 

यह /Library/Frameworks/Python.framework/Versions/2.7/bin/python होना चाहिए, अगर अपने पथ आप क्या कहते हैं यह है। यदि नहीं, तो आप अपना पथ सही नहीं स्थापित कर रहे हैं, इसलिए echo $PATH और देखें।

यदि है, तो ls -l /Library/Frameworks/Python.framework/Versions/2.7/bin/python। यह किसी अन्य निर्देशिका में कुछ भी नहीं, python2.7 या ./python2.7 पर एक सिम्लिंक होना चाहिए। यदि नहीं, तो आपकी स्थापना टूट गई है, और करने के लिए सबसे अच्छी बात यह है कि पाइथन अनइंस्टॉल करें और इसे ठीक से पुनर्स्थापित करें। या बस इसे पुन: स्थापित करें, और ऐप्पल का उपयोग करें। या, यदि आपको वास्तव में 2.7.2 की बजाय 2.7.3 की आवश्यकता है, या आपको स्टैंडअलोन py2app बंडल (विशेष रूप से यदि आपको उन्हें पुराने ओएस एक्स के साथ संगत होने की आवश्यकता है) बनाने की आवश्यकता है, या आप sudo पर एलर्जी हैं और सिस्टम- व्यापक फाइलें विश्व-लेखन योग्य हैं, या किसी अन्य कारण से आप ऐप्पल का उपयोग नहीं कर सकते हैं, इसे स्वयं करने की कोशिश करने के बजाय python.org या होमब्रू से इंस्टॉल करें।

+0

वास्तव में,/आदि में उपनाम की तलाश करने के बारे में आपकी टिप्पणी ... एक/etc/प्रोफ़ाइल थी जो स्वचालित रूप से 2.6 उपनाम जोड़ रहा था। एक बार जब इसे हटा दिया गया तो सबकुछ वापस गिरना शुरू हो गया ... धन्यवाद! – espais

+3

आप यह जानना चाहेंगे कि वह उपनाम कहां से आया था, क्योंकि ... यह आपकी पीठ के पीछे होने वाली एक बहुत ही अजीब चीज है, और यदि कुछ इंस्टॉलर आप दौड़ते हैं या ऐसा कुछ करते हैं, तो यह अन्य सभी बुरी चीजें हो सकता है ... – abarnert

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