2009-09-05 13 views
5

यदि आप पाइथन के कई संस्करण स्थापित करते हैं (मेरे पास वर्तमान में डिफ़ॉल्ट 2.5 है, स्थापित 3.0.1 और अब 2.6.2 स्थापित है), यह स्वचालित रूप से /usr/local में सामान रखता है, और यह /Library/Frameworks/Python/Versions/theVersion/bin को शामिल करने के पथ को भी समायोजित करता है, लेकिन उस बिंदु का क्या होता है जब /usr/local पहले ही पाथ पर है, और सभी स्थापित संस्करण (डिफ़ॉल्ट 2.5 को छोड़कर, जो /usr/bin में है) वहां हैं? मैंने .bash_profile में अपने पैथ से पाइथन फ्रेमवर्क पथ हटा दिए, और मैं अभी भी "python -V" => "Python 2.5.1", "python2.6 -V" => "Python 2.6.2", "python3 -V" => "Python 3.0.1" टाइप कर सकता हूं। बस सोच रहा है कि यह इसे /usr/local में क्यों रखता है, और पैथ भी बदलता है। और क्या मैंने ठीक किया? धन्यवाद।ओएस एक्स - एकाधिक पायथन संस्करण, पथ और/यूएसआर/स्थानीय

इसके अलावा, 2.6 स्थापना 2.6 करने के लिए /usr/local/bin बिंदु में यह वर्तमान 'से एक बना दिया, 2.6 करने के लिए .../Python.framework/Versions/Current बिंदु है।, तो सादे' अजगर 'बातें है, लेकिन यह कोई फर्क नहीं पड़ता क्योंकि usr/bin पहले आता है और साथ बातें वहां एक ही नाम 2.5 सामान इंगित करता है .. वैसे भी, 2.5 तेंदुए के साथ आता है, मैंने 3.0.1 स्थापित किया है बस नवीनतम संस्करण (जिसमें एक डीएमजी फ़ाइल है), और अब मैंने pygame के साथ उपयोग के लिए 2.6.2 स्थापित किया है।

संपादित करें: ठीक है, मैं इसे समझता हूं। जब आप इंस्टॉल करते हैं, तो कहते हैं, पायथन 2.6.2: सिम्लिंक का एक गुच्छा /usr/local/bin में जोड़ा जाता है, इसलिए जब एक पाइथन स्क्रिप्ट में #! /usr/local/bin/python शेबैंग होता है, तो यह चलाएगा, और /Applications/Python 2.6 में, पायथन लॉन्चर को चलाने के लिए डिफ़ॉल्ट एप्लिकेशन बनाया जाएगा। पीई फाइलें, जो /usr/local/bin/pythonw का उपयोग करती हैं, और /Library/Frameworks/Python.framework/Versions/2.6/bin पथ के मोर्चे पर बनाई और जोड़ दी गई है, इसलिए which python में पाइथन मिलेगा, और #! /usr/bin/env python शेबैंग की इच्छा ठीक से चल जाएगी।

+0

पायथन के वर्चुअलनेव पैकेज के बारे में क्या? यह एक मशीन पर एकाधिक पायथन इंस्टॉलेशन होने का एक काफी लोकप्रिय तरीका प्रतीत होता है। क्या अन्य उपयोगकर्ताओं ने इसे अपने ओएस एक्स मशीनों पर किया है? – Foofy

उत्तर

5

कोई प्राथमिकता गारंटी नहीं है कि/usr/local/bin पाथ पर रहेगा (विशेष रूप से यह "/ usr/bin! -) के सामने" जरूरी नहीं होगा ", इसलिए यह सुनिश्चित करने के लिए इंस्टॉलर के लिए बिल्कुल उचित है विशेष रूप से आवश्यक/library/.../bin निर्देशिका पाथ पर मिलती है। इसके अलावा, यह मामला हो सकता है कि /Library/.../bin में पूरक सामान है जो/usr/local/bin में symlinked नहीं मिलता है, हालांकि मुझे लगता है कि वर्तमान में पाइथन के हाल ही के मैक मानक वितरण के मामले में नहीं है।

यदि आप जानते हैं कि जिस तरह से आप अपना रास्ता व्यवस्थित करेंगे, और एक्जिक्यूटिव के सटीक सेट का उपयोग आप करेंगे, पूरी तरह से/usr/local/bin से संतुष्ट हैं, तो यह आपके लिए ठीक है/निश्चित रूप से अपने स्वयं के पथ से लाइब्रेरी/आदि निर्देशिकाएं।

+0

क्या होगा यदि मैंने पाइथन 2.6 को हटा दिया है?मैं इसे/अनुप्रयोगों और/पुस्तकालय///Versions/2.6.2 से हटा सकता हूं, लेकिन/usr/local/के बारे में क्या? टूटा सिम्लिंक का गुच्छा पीछे नहीं छोड़ा जाएगा? और मैं 2.6.2 को चुनने की कोशिश में वहां गड़बड़ नहीं करना चाहता .. मुझे नहीं पता .. – mk12

+0

हाँ, आपको विशेष रूप से (कुछ) 2.6-विशिष्ट सिम्लिंक को हटा देना होगा, जब तक कि आप एक "अनइंस्टॉल" के साथ आता है जो एक distro का उपयोग कर रहे हैं (मुझे विश्वास है कि python.org से मानक एक नहीं है) - 'ls -l/usr/local/bin | grep 'पायथन। * 2.6'' आसानी से उन्हें पहचान लेगा, निश्चित रूप से, इसलिए कोई "गड़बड़ नहीं है" और न ही "लेने का प्रयास" है। –

+0

क्या मैं/usr/local/bin में सबकुछ से छुटकारा नहीं पा रहा हूं और जिस क्रम में मैं चाहता हूं उसे पथ पर /Python.framework/Versions/x.x.x/bin डालें? – mk12

0

मैंने अपने मैक पर इस मुद्दे को अभी देखा/सामना किया। मेरे पास मेरी मशीन पर पाइथन 2.5.4, 2.6.2, और 3.1.1 है, और इच्छा के अनुसार आसानी से उनके बीच बदलने के लिए एक रास्ता तलाश रहा था। यही वह समय था जब मैंने एक्जिक्यूटिव के लिए सभी सिम्लिंक को देखा, जिसे मैंने '/ usr/bin' और '/ usr/local/bin' दोनों में पाया। मैंने python2.5, python2.6, आदि को छोड़कर सभी गैर-संस्करण विशिष्ट सिम्लिंक को फटकारा, और एक बैश खोल स्क्रिप्ट लिखी जिसे मैं एक सिम्लिंक को बदलने के लिए रूट के रूप में चला सकता हूं जिसका उपयोग मैं अपनी पसंद के संस्करण के पथ को निर्देशित करने के लिए करता हूं

'/Library/Frameworks/Python.framework/Versions/Current'

सिमलिंक बाहर फाड़ के बारे में केवल बुरी बात है, अगर कोई अन्य एप्लिकेशन उन्हें किसी कारण के लिए आवश्यक है। मेरी राय है कि इन सिम्लिंक क्यों बनाए जाते हैं, एलेक्स के मूल्यांकन के समान है, इंस्टॉलर सभी अड्डों को कवर करने की कोशिश कर रहा है। मेरे सभी संस्करण एक इंस्टॉलर द्वारा स्थापित किए गए हैं, हालांकि मैं पूर्ण 64-बिट समर्थन को सक्षम करने के लिए स्वयं को संकलित करने का प्रयास कर रहा हूं, और जब आप स्वयं संकलित और स्थापित करते हैं तो आप सिम्लिंक बनाए गए या PATH के दौरान संशोधित नहीं हो सकते हैं स्थापना।

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