पायथन वातावरण के लिए कोंडा, या कोंडा-फोर्ज का उपयोग किया जाना चाहिए?


128

Condaऔर conda-forgeदोनों पायथन पैकेज मैनेजर हैं। जब एक पैकेज दोनों रिपॉजिटरी में मौजूद हो तो क्या उचित विकल्प है? उदाहरण के लिए, Django को या तो स्थापित किया जा सकता है, लेकिन दोनों के बीच अंतर कई निर्भरताएं हैं (कोंडा-फोर्ज में कई और अधिक हैं)। इन मतभेदों के लिए कोई स्पष्टीकरण नहीं है, एक साधारण README भी नहीं है।

किसका उपयोग करना चाहिए? कोंडा या कोंडा-फोर्ज? फर्क पड़ता है क्या?


5
"कोंडा और कोंडा-फोर्ज दोनों पायथन पैकेज मैनेजर हैं।" मुझे नहीं लगता कि यह सच है। मुझे नहीं लगता कि वे भी उसी श्रेणी में हैं। condaएक पैकेज मैनेजर है और conda-forgeएक चैनल है। शायद यह सच था जब यह सवाल पूछा गया था?

जवाबों:


203

संक्षिप्त उत्तर यह है कि, मेरे अनुभव में आमतौर पर, यह कोई फर्क नहीं पड़ता कि आप किसका उपयोग करते हैं।

लंबे उत्तर:

तो conda-forgeएक अतिरिक्त चैनल है जिसमें से पैकेज स्थापित किए जा सकते हैं। इस अर्थ में, यह डिफ़ॉल्ट चैनल या किसी भी अन्य सैकड़ों (हजारों?) चैनलों में से कोई भी विशेष नहीं है, जिनके लिए लोगों ने पैकेज बनाए हैं। यदि आप https://anaconda.org पर साइन अप करते हैं और अपना कॉनडा पैकेज अपलोड करते हैं तो आप अपना चैनल जोड़ सकते हैं ।

यहाँ हमें भेद करने की आवश्यकता है, जो मुझे लगता है कि आप इस प्रश्न के बारे में अपने वाक्यांशों के बारे में स्पष्ट नहीं हैं, बीच में conda, क्रॉस-प्लेटफॉर्म पैकेज मैनेजर और conda-forge, पैकेज चैनल। एनाकोंडा इंक (पूर्व में कॉन्टिनम आईओ), condaसॉफ्टवेयर के मुख्य डेवलपर्स , पैकेजों के एक अलग चैनल को भी बनाए रखते हैं, जो कि डिफ़ॉल्ट होता है जब आप conda install packagenameकोई विकल्प बदले बिना टाइप करते हैं।

चैनलों के लिए विकल्पों को बदलने के तीन तरीके हैं। पहले दो हर बार जब आप एक पैकेज स्थापित करते हैं और अंतिम एक लगातार होता है। किसी पैकेज को स्थापित करने पर हर बार एक चैनल निर्दिष्ट करने के लिए पहला है:

conda install -c some-channel packagename

बेशक, पैकेज का उस चैनल पर अस्तित्व है। यह तरीका स्थापित होगा packagenameऔर इसकी सभी निर्भरताएँ some-channel। वैकल्पिक रूप से, आप निर्दिष्ट कर सकते हैं:

conda install some-channel::packagename

पैकेज अभी भी मौजूद है some-channel, लेकिन अब, केवल packagenameसे खींच लिया जाएगा some-channel। निर्भरता को पूरा करने के लिए जिन अन्य पैकेजों की आवश्यकता होती है, उन्हें आपके चैनल की डिफ़ॉल्ट सूची से खोजा जाएगा।

अपने चैनल कॉन्फ़िगरेशन को देखने के लिए, आप लिख सकते हैं:

conda config --show channels

आप उस आदेश को नियंत्रित कर सकते हैं जिसके साथ चैनल खोजे जाते हैं conda config। तुम लिख सकते हो:

conda config --add channels some-channel

कॉन्फ़िगरेशन सूची some-channelके शीर्ष पर चैनल जोड़ने के channelsलिए। यह some-channelसर्वोच्च प्राथमिकता देता है। प्राथमिकता निर्धारित करता है ( भाग में ) किस चैनल का चयन किया जाता है जब एक से अधिक चैनल में एक विशेष पैकेज होता है। सूची के अंत में चैनल जोड़ने के लिए और इसे सबसे कम प्राथमिकता दें, टाइप करें

conda config --append channels some-channel

यदि आप अपने द्वारा जोड़े गए चैनल को हटाना चाहते हैं, तो आप ऐसा करके लिख सकते हैं

conda config --remove channels some-channel

देख

conda config -h

अधिक विकल्पों के लिए।

एनाकोंडा द्वारा बनाए गए conda-forgeचैनल के बजाय चैनल का उपयोग करने के चार मुख्य कारण हैं defaults:

  1. चैनल पर उन लोगों की तुलना में पैकेज अधिक अद्यतित conda-forge हो सकते हैंdefaults
  2. conda-forgeचैनल पर ऐसे पैकेज हैं जो उपलब्ध नहीं हैंdefaults
  3. आप इस तरह के रूप में एक निर्भरता का उपयोग करना पसंद करेंगे openblas(से conda-forge) के बजाय mkl(से defaults)।
  4. यदि आप एक पैकेज स्थापित कर रहे हैं जिसके लिए एक संकलित पुस्तकालय (उदाहरण के लिए, C एक्सटेंशन या C लाइब्रेरी के चारों ओर एक आवरण) की आवश्यकता है, तो यह असंगतता की संभावना को कम कर सकता है यदि आप किसी एकल चैनल से बाइनरी के कारण एक वातावरण में सभी पैकेज स्थापित करते हैं आधार सी लाइब्रेरी की अनुकूलता (लेकिन यह सलाह भविष्य में पुरानी / परिवर्तन से बाहर हो सकती है)।

1
धन्यवाद! मेरे पास दो संबंधित प्रश्न हैं: 1. मैं कैसे पता लगा सकता हूं कि कौन सा चैनल आज़माना अच्छा है और; 2. जब मैं एक चैनल पर कॉन्फ़िगर करता हूं, तो मैं इसे डिफ़ॉल्ट रूप से कैसे रीसेट कर सकता हूं?
डेनियल

1
@ केनी आपके पहले प्रश्न का उत्तर देने के लिए, आपको उस पैकेज की खोज करनी चाहिए जिसे आप anaconda.org पर चाहते हैं और देखें कि किन चैनलों में पैकेज है। मैंने आपके दूसरे प्रश्न का उत्तर देने के लिए संपादन किया। हालाँकि, मैं यह भी नोट करूँगा कि यदि आप किसी चैनल से एक ही पैकेज स्थापित करना चाहते हैं, तो conda install -c some-channel packagenameकमांड को लिखने के तरीके का उपयोग करना अधिक आसान है
darthbith

यह महान है! समर्थित मॉड्यूल, ताजगी, कवरेज आदि के संदर्भ में क्या कोंडा-फोर्ज और कोंडा के बीच तुलना उपलब्ध है?
रटगेर हॉफस्टेल

1
mklसे तेज नहीं है openblas?
एंडोलिथ

3
@endolith हो सकता है, लेकिन 1) संभवतः केवल इंटेल प्रोसेसर और 2 पर) यह खुला स्रोत नहीं है
darthbith

4

एनाकोंडा ने अपनी सेवा की शर्तों को बदल दिया है ताकि "भारी वाणिज्यिक उपयोगकर्ताओं" को भुगतान करना पड़े, जिसमें conda-forgeचैनल शामिल नहीं है ।

conda-forgeयदि आप उपयोग के लिए भुगतान नहीं करना चाहते हैं, तो आप शायद छड़ी करना चाहेंगे । डॉक्स में कहा गया है :

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>

आप मिनिफ़ॉगर का उपयोग भी कर सकते हैं जिसमें conda-forgeडिफ़ॉल्ट चैनल के रूप में है, और ppc64le और anarch64 प्लेटफार्मों के साथ-साथ अन्य सामान्य वाले का समर्थन करता है।


3

कोंडा-फोर्ज चैनल वह जगह है जहां आप ऐसे पैकेज पा सकते हैं जो कि कोंडा के लिए बनाए गए हैं लेकिन अभी तक आधिकारिक एनाकोंडा वितरण का हिस्सा नहीं हैं।

आम तौर पर, आप उनमें से किसी का उपयोग कर सकते हैं।


1

कुछ पायथन लाइब्रेरी हैं जिन्हें आप एक साधारण conda installसे स्थापित नहीं कर सकते हैं क्योंकि उनका चैनल उपलब्ध नहीं है जब तक कि आप कोंडा-फोर्ज लागू नहीं करते हैं। मेरे अनुभव से, कोंडा की तुलना में विभिन्न चैनल स्रोतों में देखने के लिए पाइप अधिक सामान्य है। उदाहरण के लिए, यदि आप python-constraintइसे स्थापित करना चाहते हैं तो आप इसके माध्यम से कर सकते हैं pip installलेकिन इसे ** कंडोम ** के माध्यम से स्थापित कर सकते हैं । आप चैनल निर्दिष्ट करने के लिए है - conda-forge

conda install -c conda-forge python-constraint // works

लेकिन नहीं

conda install python-constraint

भ्रामक उत्तर। पाइप स्थापित करना कॉन्डा के अपने पैकेज प्रबंधन और निर्भरता सत्यापन के बाहर पैकेज लेता है, जिसका अर्थ है कि आपको इसे (और संभवतः इसकी निर्भरता) को मैन्युअल रूप से प्रबंधित करने की आवश्यकता है और जैसे कि conda update --allपाइप स्थापित पैकेज को अपडेट नहीं करेगा
जीन मोनेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.