टीएल; डीआर: निर्भरता संघर्ष: दूसरे को डाउनग्रेड करने के लिए एक को अपडेट करना (आवश्यकताओं के अनुसार) की आवश्यकता होती है
तुम सही हो:
conda update --all
वास्तव में 1 जाने का रास्ता है । कॉनडा हमेशा पैकेज को श्रृंखला में नवीनतम संस्करण में अपग्रेड करने की कोशिश करता है (जैसे कि पायथन 2.x या 3.x)।
निर्भरता संघर्ष
लेकिन यह संभव है कि निर्भरता संघर्ष (जो एक और उन्नयन को रोकते हैं)। कॉनडा आमतौर पर बहुत स्पष्ट रूप से चेतावनी देते हैं यदि वे होते हैं।
उदाहरण के लिए X को Y <5.0 की आवश्यकता है, इसलिए Y कभी नहीं होगा = = 5.0
इसलिए आप उन सभी को अपग्रेड नहीं कर सकते।
समाधान करना
जोड़ने के लिए: शायद यह काम कर सकता है लेकिन Y> 5.0 के साथ काम करने वाला X का एक नया संस्करण कोंडा में उपलब्ध नहीं है। पाइप के साथ स्थापित करना संभव है, क्योंकि पाइप में अधिक पैकेज उपलब्ध हैं। लेकिन इस बात से अवगत रहें कि यदि निर्भरता की समस्या है, तो पाइप भी पैकेज स्थापित करता है और यह आम तौर पर आपके कॉन्डा के माहौल को इस अर्थ में तोड़ देता है कि आप मज़बूती से कॉन्डा के साथ स्थापित नहीं कर सकते हैं। यदि आप ऐसा करते हैं, तो इसे अंतिम उपाय के रूप में करें और सभी पैकेजों को कोंडा के साथ स्थापित करने के बाद। बल्कि हैक है।
एक सुरक्षित तरीका जिसे आप आजमा सकते हैं, एक चैनल के रूप में कॉन्डा-फोर्ज को अपग्रेड करते समय ( -c conda-forge
एक ध्वज के रूप में जोड़ें ) या किसी भी अन्य चैनल को जो आपको लगता है कि आपके पैकेज में है, अगर आपको वास्तव में इस नए संस्करण की आवश्यकता है, तो जोड़ना है । इस तरह से कोंडा उपलब्ध पैकेजों के लिए भी इस स्थान पर खोज करता है।
अपने अपडेट को ध्यान में रखते हुए : आप उन्हें प्रत्येक अलग से अपग्रेड कर सकते हैं , लेकिन ऐसा करने से न केवल अपग्रेड, बल्कि एक और पैकेज का डाउनग्रेड भी शामिल होगा। कहो, ऊपर के उदाहरण में जोड़ने के लिए:
X> 2.0 को Y <5.0 की आवश्यकता है, X <2.0 को Y> 5.0 की आवश्यकता है
इसलिए Y> 5.0 को अपग्रेड करने का अर्थ है एक्स को <2.0 में अपग्रेड करना और इसके विपरीत।
( यह एक शैक्षणिक उदाहरण है, लेकिन यह वास्तव में एक ही है, आमतौर पर अधिक जटिल निर्भरता और उप-निर्भरता के साथ )
इसलिए आप अभी भी उन सभी को अलग से अपग्रेड करके अपग्रेड नहीं कर सकते हैं ; निर्भरताएं अभी पहले या बाद में संतोषजनक नहीं हैं, एक अपग्रेड एक पहले से ही उन्नत पैकेज को फिर से डाउनग्रेड करेगा। या पैकेज की अनुकूलता को तोड़ें (जो आप आमतौर पर नहीं चाहते हैं!), जो केवल एक अनदेखी-निर्भरता और बल- युआन को स्पष्ट रूप से लागू करके संभव है । लेकिन यह केवल मुद्दों के आसपास अपना रास्ता हैक करने के लिए है, निश्चित रूप से सामान्य उपयोगकर्ता मामला नहीं है!
1 यदि आप वास्तव में अपनी स्थापना के पैकेजों को अपडेट करना चाहते हैं, जो आप आमतौर पर नहीं करते हैं । आधार वातावरण में चलने वाला कमांड इसमें संकुल को अद्यतन करेगा, लेकिन आमतौर पर आपको आभासी वातावरण ( conda create -n myenv
और तब conda activate myenv
) के साथ काम करना चाहिए । conda update --all
ऐसे वातावरण के अंदर निष्पादन इस वातावरण के अंदर संकुल को अद्यतन करेगा । हालांकि, चूंकि आधार पर्यावरण भी एक वातावरण है, इसलिए उत्तर दोनों मामलों में एक ही तरह से लागू होता है।
conda update --all --alt-hint
और देखें कि क्या यह कोई आउटपुट देता है ... या बस कोशिश करेंconda update scipy
और देखें कि क्या होता है (शायद--alt-hint
झंडे के साथ )