एनाकोंडा निर्यात पर्यावरण फ़ाइल


129

मैं एनाकोंडा पर्यावरण फ़ाइल कैसे बना सकता हूं जिसका उपयोग अन्य कंप्यूटरों पर किया जा सकता है?

मैंने YML का उपयोग करके अपने एनाकोंडा पायथन पर्यावरण को निर्यात किया conda env export > environment.yml। निर्यात environment.ymlमें यह पंक्ति है prefix: /home/superdev/miniconda3/envs/juicyenvजो मेरे एनाकोंडा के स्थान पर मैप करती है जो अन्य पीसी पर अलग होगी।


7
मैं अभी कुछ परीक्षण कर रहा था, और मुझे लगा कि उपसर्ग को अनदेखा किया गया है ... मुझे यकीन नहीं है कि यह एनवी एक्सपोर्ट में क्यों है। आपको conda env create -f environment.yml एक तरफ के रूप में बस करने में सक्षम होना चाहिए , मेरे अनुभव में यह प्लेटफार्मों भर में काम करने वाला नहीं है, क्योंकि conda env कई निर्भरताएं जैसे `vs2015_runtime` को सूचीबद्ध करेगा यदि आप विंडोज पर हैं। लेकिन निश्चित रूप से जो लिनक्स पर उपलब्ध नहीं है।
एलेक्स जी राइस

4
कोन्डा वास्तव में environment.ymlफ़ाइल को हाथ से बनाने की सलाह देता है , इसलिए आप इसे छोड़ सकते हैं - देखें stackoverflow.com/questions/39280638/…
ब्रायन बर्न्स

जवाबों:


178

मुझे condaऐनक में कुछ भी नहीं मिल रहा है जो आपको prefix: ...लाइन के बिना एक पर्यावरण फ़ाइल निर्यात करने की अनुमति देता है । हालाँकि, जैसा कि एलेक्स ने टिप्पणियों में बताया है , फ़ाइल से वातावरण बनाते समय conda को उपसर्ग रेखा की परवाह नहीं है।

इसे ध्यान में रखते हुए, यदि आप चाहते हैं कि दूसरे उपयोगकर्ता को आपके डिफ़ॉल्ट इंस्टॉल पथ का कोई ज्ञान नहीं है, तो आप grepलिखने से पहले उपसर्ग लाइन को हटा सकते हैं environment.yml

conda env export | grep -v "^prefix: " > environment.yml

किसी भी तरह से, दूसरा उपयोगकर्ता तब चलता है:

conda env create -f environment.yml

और पर्यावरण उनके डिफ़ॉल्ट कोंडा पर्यावरण पथ में स्थापित हो जाएगा।

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

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name

ध्यान दें कि कॉनडा environment.ymlहाथ से बनाने की सिफारिश करता है, जो विशेष रूप से महत्वपूर्ण है यदि आप अपने पर्यावरण को प्लेटफार्मों (विंडोज / लिनक्स / मैक) पर साझा करना चाहते हैं। इस मामले में, आप बस prefixलाइन छोड़ सकते हैं ।


1
... eggcellent! T
अहि तूना

44

किसी अन्य कंप्यूटर में स्थापित किए जाने वाले वातावरण से संकुल को बचाने का सबसे आसान तरीका है:

$ conda list -e > req.txt

तो आप पर्यावरण का उपयोग कर स्थापित कर सकते हैं

$ conda create -n new environment --file req.txt

यदि आप उपयोग करते हैं pip, तो कृपया निम्न आदेशों का उपयोग करें: संदर्भ https://pip.pypa.io/en/stable/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

अच्छा है, लेकिन यह पाइप स्थापित पैकेज के साथ काम नहीं करता है, हालांकि।
छोटे बॉबी टेबल्स

1
धन्यवाद मैं सिर्फ दिए गए संदर्भ के आधार पर अपडेट किया गया
javac

मैंने चीजों को स्थापित करने के लिए एनाकोंडा नेविगेटर और पाइप (पर्यावरण के भीतर से) दोनों का उपयोग किया है। आप मुझे क्या उपयोग करने की सलाह देंगे? दोनों आज्ञा?
DA

मुझे लगता है कि एनाकोंडा वातावरण में कोंडा कमांड का उपयोग करना बेहतर है, आप पाइप का उपयोग भी कर सकते हैं यदि आवश्यक हो
जेवैक

9
  • लिनक्स

    conda env Export --no-buildds | grep -v "उपसर्ग"> environment.yml

  • खिड़कियाँ

    conda env Export --no-buildds | findstr -v "उपसर्ग"> environment.yml


तर्क: डिफ़ॉल्ट रूप से, conda env exportबिल्ड जानकारी शामिल होती है:

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...

आप इसके बजाय बिल्ड जानकारी के बिना अपने पर्यावरण को निर्यात कर सकते हैं:

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...

जो पायथन संस्करण और ओएस से पर्यावरण को खोल देता है।


1
मैं मानता हूं कि यह एक अच्छा जवाब है, लेकिन कुछ जानकारियों को जोड़ने पर विचार करें कि बिल्ड जानकारी को छोड़कर पूरे प्लेटफार्मों में एनवीएस को स्थानांतरित करने के लिए उपयोगी क्यों है।
19

इस का उपयोग कर समाप्त हुआ, लेकिन महान विचार @merv। बस इतना ही किया।
फ्रांस्वा लेब्लांक

दुर्भाग्य से, यह हमेशा अलग ओएस पर निर्यात और पुन: स्थापित करते समय काम नहीं करेगा।
सॉरेन

2

मुझे लगता है कि पूरे condaवातावरण को निर्यात करने की तुलना में केवल स्ट्रिंग प्रारूप में पैकेज निर्यात करना अधिक पोर्टेबल है । जैसा कि पिछले उत्तर ने पहले ही सुझाया था:

$ conda list -e > requirements.txt

हालाँकि, requirements.txtइसमें बिल्ड नंबर होते हैं जो ऑपरेटिंग सिस्टम के बीच पोर्टेबल नहीं होते हैं, जैसे कि बीच Macऔर Ubuntu। में conda env exportहम विकल्प होता है --no-buildsलेकिन नहीं के साथ conda list -eतो हम निम्न आदेश जारी करके बिल्ड नंबर निकाल सकते हैं:

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 

और दूसरे कंप्यूटर पर पर्यावरण को फिर से बनाएँ:

conda create -n recreated_env --file requirements.txt 

sedकमांड ने बहुत अच्छा काम किया। मुझे एक पैच संस्करण हटाना पड़ा। तो major.minor.patchकरने के लिए major.minorऔर यह काम किया। पता चला, मुख्य रिपोज द्वारा निचले पैच नंबर को गिरा दिया गया था।
लुकास

1
  1. पहले अपने कोंडा पर्यावरण को सक्रिय करें (एक यू एक्सपोर्ट / बैकअप करना चाहते हैं)
conda activate myEnv
  1. फ़ाइल के लिए सभी पैकेज निर्यात करें (myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
  1. पर्यावरण को पुनर्स्थापित / आयात करें:
conda create --name myEnvRestored --file myEnvBkp.txt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.