त्रुटि के बिना "conda install --yes --file आवश्यकताएँ.txt" का उपयोग करके केवल उपलब्ध पैकेज स्थापित करें


96

निम्नलिखित आदेशों के माध्यम से कॉनडा का उपयोग करते हुए आवश्यकताओं में पैकेज स्थापित करें

conda install --yes --file requirements.txt

यदि आवश्यकताओं में एक पैकेज। टेक्सट उपलब्ध नहीं है, तो यह "नो पैकेज एरर" फेंकता है जैसे कि नीचे दिखाया गया है:

एनाकोंडा क्लाउड एप साइट का उपयोग करना https://api.anaconda.org

पैकेज मेटाडेटा ला रहा है:…।

त्रुटि: वर्तमान linux-64 चैनलों में कोई संकुल नहीं मिला: nimfa == 1.2.3

आप इस पैकेज को anaconda.org पर खोज सकते हैं

anaconda search -t conda nimfa ==1.2.3

एक त्रुटि को फेंकने के बजाय, क्या इस व्यवहार को बदलना संभव है जैसे कि यह आवश्यकताओं में सभी उपलब्ध पैकेजों को स्थापित करता है। और जो उपलब्ध नहीं हैं उनके लिए एक चेतावनी फेंकता है?

मुझे यह पसंद है क्योंकि, जो पैकेज nimfa है जो त्रुटि उपलब्ध नहीं है, पाइप स्थापित किया जा सकता है। इसलिए यदि मैं conda install --yes --file requirements.txtअनुपलब्ध पैकेजों के लिए सिर्फ एक चेतावनी फेंकने के व्यवहार को बदल सकता हूं, तो मैं इसे कमांड के साथ pip install -r requirments.txtintravis.yml का पालन कर सकता हूं, इसलिए ट्रैविसीआई इसे उस स्थान से स्थापित करने का प्रयास करता है जहां यह उपलब्ध है।

जवाबों:


170

मैं फ़ाइल की तर्ज पर पुनरावृति कर रहा हूँ

$ while read requirement; do conda install --yes $requirement; done < requirements.txt

संपादित करें : यदि आप पाइप का उपयोग करके एक पैकेज स्थापित करना चाहते हैं यदि यह कोंडा के माध्यम से उपलब्ध नहीं है, तो इसे दें:

$ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt

संपादित करें : यदि आप Windows का उपयोग कर रहे हैं (क्रेडिट @Clay पर जाता है ):

$ FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"


5
इसके लिए धन्यवाद, इसका उपयोग करने वाले किसी व्यक्ति के लिए छोटा संकेत, सुनिश्चित करें कि आपकी आवश्यकताएं हैं। एक नई
पंक्ति के

1
वहाँ भी स्वचालित रूप से pip installसंकुल जो conda installपुनरावृत्ति करते हुए उपलब्ध नहीं हैं , का उपयोग करने का एक तरीका है ?
पीटरबी

2
@delusionX, मैंने उत्तर बढ़ाया है।
हॉफमैन

11
एक विंडोज मशीन पर @TillHoffmann समाधान: FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f" बहुत अच्छी तरह से काम करता है। धन्यवाद!
क्ले

3
यदि आप आवश्यकताओं फ़ाइल में टिप्पणी करते हैं, तो पाइप मौखिक रूप से शिकायत करता है (यदि हानिरहित होने पर कष्टप्रद)। बैश वन-लाइनर की भिन्नता जो टिप्पणियों को नजरअंदाज करती है:while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
drevicko


1

देखने वालों के लिए, मैंने इसे मछली के खोल के लिए @ टिलहॉफमैन के समाधान के रूप में इस्तेमाल किया:

$ while read requirement; conda install --yes $requirement; end < requirements.txt

तथा

$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt

1

Pbms का जवाब यहां पर देना सही है, यह मानकर कि आपके पास नकल करने के लिए एक मौजूदा माहौल है। कॉनडा कॉनडा पैकेज और पाइप पैकेज दोनों को स्थापित करने में पूरी तरह से सक्षम है, जैसा कि सूचीबद्ध है environment.yml। मैं पूरी प्रक्रिया को अधिक विस्तार से प्रलेखित करना चाहता था। ध्यान दें कि मैं फ़ोल्डर-आधारित वातावरण का उपयोग कर रहा हूं, यही कारण है कि मैंने --prefix [path to environment folder]अधिकांश कमांड में जोड़ा है।

कहें कि आपने मौजूदा प्रोजेक्ट के लिए मौजूदा फ़ोल्डर में बुलाए envगए फ़ोल्डर के लिए एक वातावरण स्थापित किया है , जैसे:

conda create --prefix ./env

आप environment.ymlइस तरह उस परियोजना के वातावरण के लिए उत्पन्न करेंगे:

conda env export --prefix ./env > environment.yml

आप कुछ अन्य फ़ोल्डर के भीतर एक नया वातावरण बना environment.ymlसकते हैं और फिर वहां से चलकर:

conda env create --prefix ./env --file environment.yml

आपको एक environment.ymlबार फिर environment.ymlवहां से कॉपी करके और फिर वहां से इसे चलाने के लिए पहले से मौजूद माहौल मिलेगा।

conda env update --prefix ./env --file environment.yml --prune

सक्रिय प्रश्न में पर्यावरण के साथ, आप इस तरह इसके संकुल की स्थिति को सत्यापित करेंगे:

conda list

यह उस आदेश का एक संक्षिप्त संस्करण है जो प्रिंट कर सकता है (ध्यान दें कि पाइप पैकेज चिह्नित हैं pypi):

# Name                    Version                   Build  Channel
pip                       19.2.2                   py37_0
python                    3.7.4                h5263a28_0
numpy                     1.16.4           py37h19fb1c0_0
pandas                    0.25.1           py37ha925a31_0
pyodbc                    4.0.27           py37ha925a31_0
ibm-db                    3.0.1                    pypi_0    pypi
ibm-db-sa                 0.3.5                    pypi_0    pypi

अंत में, यह एक संक्षिप्त संस्करण है जो ऐसा environment.ymlदिख सकता है (ध्यान दें कि पाइप पैकेज अपनी श्रेणी में सूचीबद्ध हैं):

dependencies:
  - pip=19.2.2=py37_0
  - python=3.7.4=h5263a28_0
  - numpy=1.16.4=py37h19fb1c0_0
  - pandas=0.25.1=py37ha925a31_0
  - pyodbc=4.0.27=py37ha925a31_0
  - pip:
    - ibm-db==3.0.1
    - ibm-db-sa==0.3.5

ध्यान रखें कि कॉनडा और पाइप का एक साथ उपयोग करने से कुछ नाराज़गी हो सकती है क्योंकि वे अनजाने में एक-दूसरे की निर्भरता को उड़ा सकते हैं। आप पहले अपने कॉनडा पैकेजों को स्थापित करने वाले हैं और उसके बाद अपने सभी पाइप पैकेजों को दोनों के बीच बारी-बारी से स्थापित करने के बजाय। यदि आपका वातावरण टूटता है, तो आधिकारिक सिफारिश यह है कि आप इसे हटाएं और इसे (अपने से) फिर से बनाएँenvironment.yml फ़ाइल से) । अधिक जानकारी के लिए, इस गाइड को देखें:

https://www.anaconda.com/using-pip-in-a-conda-environment/

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