.Yml फ़ाइल के साथ मौजूदा कोनडा वातावरण को कैसे अपडेट करें


138

किसी अन्य .yml फ़ाइल के साथ पहले से मौजूद कोंडा पर्यावरण को कैसे अपडेट किया जा सकता है। यह उन परियोजनाओं पर काम करते समय बेहद मददगार होता है, जिनमें कई आवश्यकता वाली फाइलें होती हैं, अर्थात base.yml, local.yml, production.yml, आदि।

उदाहरण के लिए, नीचे एक base.ymlफाइल में कोंडा-फोर्ज, कोंडा और पाइप पैकेज हैं:

base.yml

name: myenv
channels:
  - conda-forge
dependencies:
  - django=1.10.5
  - pip:
    - django-crispy-forms==1.6.1

वास्तविक वातावरण के साथ बनाया गया है conda env create -f base.yml:।

बाद में, अतिरिक्त पैकेजों को इसमें जोड़ना होगा base.yml। एक अन्य फ़ाइल, कहते हैं local.yml, उन अद्यतनों को आयात करने की आवश्यकता है।

इसे पूरा करने के पिछले प्रयासों में शामिल हैं:

local.ymlआयात परिभाषा के साथ एक फ़ाइल बनाना :

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

और फिर कमांड चलाएँ conda install -f local.yml:।

यह काम नहीं करता। कोई विचार?


क्या वर्तमान में सक्रिय वातावरण को अद्यतन करना संभव है ?? मैंने बस यह कोशिश की लेकिन अद्यतन yml फ़ाइल में नामित वातावरण में चला गया।
सोरेन

जवाबों:


202

Conda env अपडेट का उपयोग करने का प्रयास करें :

conda activate myenv
conda env update --file local.yml

या पर्यावरण को सक्रिय करने की आवश्यकता के बिना (धन्यवाद @NumesSanguis):

conda env update --name myenv --file local.yml

12
आप के बीच बराबर के संकेत की जरूरत नहीं है -fऔर file.yml। बराबरी के चिन्ह को हटाने से .ymlफ़ाइल नाम पर टैब पूरा करने का काम होगा ।
बॉलपॉइंटबैन

4
में --name env_nameकिसी भी name: fooटैग को अनदेखा करने के लिए जोड़ें local.yml। पहले myenv को सक्रिय करने की आवश्यकता को भी रोकता है। पूर्ण आदेश: conda env update --name env_name --file local.yml से: stackoverflow.com/a/45525593/3399066 की टिप्पणी
नुम्ससुंगिस

1
सबसे हालिया कोंडा संस्करण में मुझे लगता है कि हम "स्रोत सक्रिय करें myenv" के बजाय "conda सक्रिय myenv" का उपयोग करते हैं
teter123f

31

सुझाया गया उत्तर आंशिक रूप से सही है। आपको पर्यावरण से हटाए गए संकुल की स्थापना रद्द करने के लिए --prune विकल्प भी जोड़ना होगा । सही कमांड:

conda env update -f local.yml --prune

यहां तक ​​कि - theprune ध्वज पाइप स्थापित निर्भरता को दूर करने के लिए पर्याप्त नहीं है ...
जीन पॉल

सच। मुझे लगता है कि यह कोंडा निर्भरता को दूर करेगा लेकिन पाइप के तहत सूचीबद्ध लोगों को नहीं
ब्लिंक

22

एल्केमिड का उत्तर सही लाइनों पर है, लेकिन मैंने पाया है कि यदि पर्यावरण पहले से ही सक्रिय है तो कॉनडा नई निर्भरताएं स्थापित करने में विफल रहता है। पर्यावरण को निष्क्रिय करना सबसे पहले यह हल करता है:

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!

4
अगर यह वर्तमान में सक्रिय नहीं है तो कोंडा को कैसे पता चलता है कि कौन सा अपडेट करना चाहता है?
थॉमस फाउन्सेन्कर

5
@ThomasFauskanger आप इसे स्पष्ट रूप से निर्दिष्ट कर सकते हैं -n <environment name>, लेकिन डिफ़ॉल्ट रूप से यह अपेक्षित वातावरण के साथ काम करने लगता है (शायद सबसे हाल ही में सक्रिय, या बस एक डिफ़ॉल्ट पर्यावरण विकल्प)
डेव

18
@ThomasFauskanger पर्यावरण का नाम YAML फ़ाइल में निर्दिष्ट किया गया है यदि इसे कोंडा द्वारा निर्यात किया गया है।
थॉमस

मुझे लगा कि इस प्रश्न का पुराना बिंदु एक अलग वातावरण को यमल फ़ाइल में निर्दिष्ट करने के लिए अद्यतन करना है।
जियाकोमो

1
@ThomasFauskanger yaml फ़ाइल में पर्यावरण का नाम शामिल है
अब्दुलरहमान Bres
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.