पायथन पैकेज स्थापित करने के लिए पाइप बनाम मैकपोर्ट का उपयोग करना


12

मैं एक अजगर पैकेज स्थापित कर सकता है ( उदाहरण के लिए , numpy) पर अपने मैक या तो macports के माध्यम से:

port install py-numpy

या के माध्यम से pip:

pip install numpy

प्रत्येक दृष्टिकोण के सामान्य पेशेवरों / विपक्ष क्या हैं? प्रत्येक दृष्टिकोण का उपयोग कब किया जाना चाहिए?

  • मुझे एक को कब पसंद करना चाहिए?
  • इससे कोई फर्क नहीं पड़ता कि मैं जो पैकेज स्थापित कर रहा हूं वह छोटा है या बड़ा (जैसे numpy)?
  • क्या यह मेरे द्वारा उपयोग किए जा रहे अजगर के संस्करण पर निर्भर करता है ( 2.xबनाम 3.x, या एप्पल pythonबनाम मैकपोर्ट का python)?
  • क्या यह मायने रखता है कि क्या pythonमेरे मैक पर कई संस्करण स्थापित हैं?
  • क्या उन्हें समवर्ती रूप से उपयोग किया जा सकता है?

मैं एक ऐसे उत्तर की उम्मीद कर रहा हूं जिसमें प्रत्येक पक्ष के कुछ पेशेवरों / विपक्षों की एक छोटी सूची है, जिनके बारे में कुछ चर्चा करें कि दूसरे को कब चुनना है।


संबंधित, लेकिन बहुत विशिष्ट: stackoverflow.com/questions/16895282/… । मैं सामान्य अजगर पैकेजों के लिए पूछ रहा हूँ बजाय matplotlib
jvriesem

AFAIK ये पहले से ही स्थापित हैं - आप टर्मिनल में देख सकते हैं:> अजगर और अगले कमांड> np के रूप में सुन्न आयात करें और यदि कोई त्रुटि नहीं है तो आपके पास है। वैकल्पिक समाधान सातत्य .io/downloads से एनाकोंडा का उपयोग करना है - इसमें कई विशेषताएं हैं और पाइप के साथ आगे की स्थापना आपके एनाकोंडा फ़ोल्डर में जाएगी।
योएन

@ योआन: numpyसिर्फ एक उदाहरण है। मैं सामान्य रूप से संकुल की स्थापना के बारे में पूछ रहा हूँ।
jvriesem

जवाबों:


3

उन्हें समवर्ती रूप से इस्तेमाल किया जा सकता है, और दोनों को मिश्रण करने के बीच कोई मुद्दा नहीं होना चाहिए (एक थोड़े बड़े चेतावनी और एक गोत्र के साथ ...)

कैविएट

चेतावनी यह है कि macports / homebrew और pip को प्रत्येक के प्रति कोई जागरूकता नहीं होगी।

इसलिए, उदाहरण के लिए, आप अपने मैक पर अजगर 3.6 स्थापित करने की अनुमति देते हैं। आप चाहते हैं nltk, जो मैकपोर्ट पर उस संस्करण के लिए तकनीकी रूप से उपलब्ध नहीं है, लेकिन यह पाइप पर है। तो आप पाइप पर स्थापित करें। दो महीने बाद, आप इसे Macports पर स्थापित देखते हैं और इसे इंस्टॉल करना चुनते हैं। अब आपके पास nltkअपनी मशीन पर दो अलग-अलग संस्करण हैं , इसलिए कैवेट एम्प्टर

द गॉटचा

यदि आप Macports के साथ पाइप का उपयोग करते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि यह वह पाइप है जो Macports के माध्यम से इंस्टॉल किया गया है और जो कि अजगर संस्करण के साथ जुड़ा हुआ है। तो, उदाहरण के लिए, आप एक py35- पाइप, py36- पाइप, आदि देखेंगे।

एक बार जब आप उचित पाइप लगा लेते हैं, तो आप selectयह सुनिश्चित करने के लिए मैकपोर्ट्स कमांड का उपयोग करते हैं कि यह अजगर के उपयुक्त संस्करण के साथ सक्रिय है:

sudo port select

मेरा अनुभव है कि MacPorts द्वारा बनाए गए पायथन वैश्विक क्षेत्र में मॉड्यूल स्थापित करने के लिए संघर्ष होता है। जल्दी या बाद में, मैकपोर्ट्स एक बंदरगाह को स्थापित करने का प्रयास करेगा जिसे आपने पहले ही पाइप द्वारा स्थापित किया है। यह उस पोर्ट में मौजूद फ़ाइल के बारे में एक त्रुटि संदेश जारी करेगा लेकिन MacPorts द्वारा इंस्टॉल नहीं किया गया है। मुझे लगता है कि @ IanC का उत्तर बेहतर है: केवल MacPorts का उपयोग करके वैश्विक पायथन क्षेत्र में स्थापित करें, केवल पाइप का उपयोग करके आभासी वातावरण में स्थापित करें।
जिम डेलांट

4

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

इसके बजाय, आपको virtualenv को पाइप-इनस्टॉल करना चाहिए और फिर इसका उपयोग अलग-अलग, वर्चुअल पायथन इंस्टॉलेशन और प्रत्येक वर्चुअल वातावरण के लिए सभी संबंधित पाइप-इंस्टॉल किए गए पैकेज पैकेज को प्रबंधित करने के लिए करना चाहिए ।

यह आपको निर्भरता प्रबंधन नरक के माध्यम से उतारे बिना एक और रिपॉजिटरी में 2.x के beautifulsoupलिए एक सॉफ्टवेयर रिपॉजिटरी में 1.x के साथ काम करने से कहने की अनुमति देता beautifulsoupहै।


0

मैं तो बस का उपयोग कर एक ही पैकेज के लिए खोज एक त्वरित परीक्षण किया था Homebrew , MacPorts और pip3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts और pip3 का एक ही पैकेज (संस्करण 1.18.1 ) था, जबकि Homebrew का संस्करण 1.16 था

दूसरों के साथ सहयोग करते समय, इस बात पर सहमत होने के लिए कि आपके विकास के वातावरण को कैसे कॉन्फ़िगर किया गया है या आप विसंगतियों में टकराएंगे और विभिन्न परीक्षा परिणाम प्राप्त करेंगे। इसलिए, सबसे अच्छा उपकरण वह है जिस पर आप सभी सहमत हैं ;-)

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