python - मैं एनाकोंडा(कोंडा) पर्यावरण में पाइप-स्थापित पैकेजों का ट्रैक कैसे रखूं?




pip anaconda (6)

मैंने Anaconda पायथन वितरण का उपयोग किया है और उपयोग किया है, और मैंने एनाकोंडा (कोंडा) पर्यावरण का उपयोग करना शुरू कर दिया है। मैं मानक conda install... का उपयोग अपने वातावरण में वितरण से संकुल को रखने के लिए कर सकता हूं, लेकिन बाहर कुछ भी उपयोग करने के लिए (यानी फ्लास्क-डब्ल्यूटीएफ, फ्लास्क-स्क्लाल्चेमी, और एलेम्बिक) मुझे सक्रिय वातावरण में pip install का उपयोग करने की आवश्यकता है। हालांकि, जब मैं पर्यावरण की सामग्री को देखता हूं, या तो निर्देशिका में, या conda list का उपयोग करके इन pip install एड पैकेज प्रदर्शित नहीं होते हैं।

pip freeze और pip list का उपयोग करके मैंने कभी भी इंस्टॉल किए गए प्रत्येक पैकेज को सूचीबद्ध किया है।

क्या मेरे एनाकोंडा env एस (दोनों pip और conda स्थापित) में क्या है, इसका ट्रैक रखने का कोई तरीका है?


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

इस शाखा को इस सप्ताह के अंत में विलय करने के लिए निर्धारित किया गया है ताकि कोंडा के संस्करण 2.1 में कोंडा के साथ बेहतर पाइप-एकीकरण होगा।


मुझे लगता है कि यहां क्या गुम है यह है कि जब आप करते हैं:

>pip install .

setup.py के साथ एक स्थानीय पैकेज स्थापित करने के लिए, यह एक पैकेज स्थापित करता है जो कि सभी कोंडा envs के लिए दृश्यमान है जो पायथन के समान संस्करण का उपयोग करते हैं। नोट मैं पाइप के कोंडा संस्करण का उपयोग कर रहा हूँ!

उदाहरण के लिए, अगर मैं python2.7 का उपयोग कर रहा हूं तो यह स्थानीय पैकेज यहां रखता है:

/usr/local/anaconda/lib/python2.7/site-packages

अगर मैं बाद में पाइथन = 2.7 (= डिफ़ॉल्ट) के साथ एक नया conda env बनाते हैं:

>conda create --name new

>source activate new

और फिर करें:

(new)>conda list    // empty - conda is not aware of any packages yet

हालांकि, अगर मैं करता हूं:

(new)>pip list      // the local package installed above is present

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

हालांकि, अगर मैं नए conda env (और सक्रिय) को बनाने के बाद स्थानीय पैकेज (फिर से पीपी का उपयोग कर) स्थापित करता हूं, तो अब कोंडा इसे देखता है:

(new)>conda list   // sees that the package is there and was installed by pip

तो मुझे लगता है कि कोंडा और पीआईपी के बीच बातचीत में कुछ समस्याएं हैं - यानी, एक कोंडा एनवी के भीतर से स्थानीय पैकेज स्थापित करने के लिए पीआईपी का उपयोग करके वह पैकेज उपलब्ध है (लेकिन कोंडा सूची के माध्यम से नहीं देखा जाता है) एक ही पायथन संस्करण के सभी अन्य कोंडा एनवीएस में।


मैं आम तौर पर 'पीआईपी' कमांड से पहले पैकेज को स्थापित करने के लिए विशिष्ट वातावरण के लिए 'बिन / पीपी' फ़ोल्डर उपसर्ग करता हूं। उदाहरण के लिए, यदि आप वातावरण py34 में pymc3 स्थापित करना चाहते हैं, तो आपको इस कमांड का उपयोग करना चाहिए:

~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3 

आपको मूल रूप से बस अपने पर्यावरण 'बिन / पीपी' फ़ोल्डर के लिए सही पथ खोजने की आवश्यकता है और इसे इंस्टॉल कमांड से पहले रखें।


मैंने @ विक्टर केर्केज़ के जवाब का पालन किया और मिश्रित सफलता मिली है। मैंने पाया कि कभी-कभी यह नुस्खा

कोंडा कंकाल पपी पैकेज

कोंडा निर्माण पैकेज

सबकुछ काम करेगा जैसा दिखता था लेकिन मैं सफलतापूर्वक पैकेज आयात नहीं कर सका। हाल ही में मैंने एनाकोंडा उपयोगकर्ता समूह पर इसके बारे में पूछा और एनाकोंडा के साथ नहीं जाने वाले पैकेज बनाने और प्रबंधित करने के लिए कोंडा का उपयोग करने के लिए सबसे अच्छे तरीके से @ ट्रेविस ओलिफंत से सुना। आप here इस धागे को पढ़ सकते हैं, लेकिन आशा है कि ओपी के प्रश्नों के उत्तर को और अधिक पूरा करने के लिए मैं नीचे दिए गए दृष्टिकोण का वर्णन करूंगा ...

उदाहरण: मैं कोंडा 2.2.5 का उपयोग कर विंडोज पर उत्कृष्ट prettyplotlib पैकेज स्थापित करने जा रहा हूं।

1 ए) conda build --build-recipe prettyplotlib

बिल्ड निर्माण के अंतिम टेस्ट सेक्शन में आप बिल्ड संदेश देखेंगे। मैंने यह त्रुटि देखी

फ़ाइल "सी: \ एनाकोंडा \ conda-bld \ test-tmp_dir \ run_test.py", लाइन 23 आयात कोई नहीं SyntaxError: किसी भी टेस्ट को असाइन नहीं किया जा सकता है: prettyplotlib-0.1.3-py27_0

1 बी) / conda-recipes / prettyplotlib में जाएं और meta.yaml फ़ाइल को संपादित करें। वर्तमान में, चरण 1 ए में स्थापित किए जा रहे संकुल के परिणामस्वरूप yaml फ़ाइलों में test खंड में कोई त्रुटि है। उदाहरण के लिए, यहां है कि कैसे prettyplotlib

test:   # Python imports   imports:
    - 
    - prettyplotlib
    - prettyplotlib

इससे पहले की खाली रेखा को हटाने के लिए इस खंड को संपादित करें - और अनावश्यक prettyplotlib लाइन को भी हटा दें। इस लेखन के समय मुझे पता चला है कि मुझे बाहरी पैकेजों के लिए इस तरह की अधिकांश मेटा.यामल फाइलों को संपादित करने की आवश्यकता है, मैं कोंडा के साथ स्थापित कर रहा हूं, जिसका अर्थ है कि एक खाली आयात लाइन है जिसके कारण दिए गए पैकेज के अनावश्यक आयात के साथ त्रुटि हुई है ।

1 सी) 1 ए से कमांड को फिर से करें, जो इस बार त्रुटि के साथ पूरा होना चाहिए। निर्माण के अंत में आपसे पूछा जाएगा कि क्या आप https://binstar.org/ को बिल्ड अपलोड करना चाहते हैं। मैंने नहीं प्रवेश किया और फिर यह संदेश देखा:

यदि आप बाद में binstar.org पर यह पैकेज अपलोड करना चाहते हैं, तो टाइप करें:

$ binstar अपलोड सी: \ Anaconda \ conda-bld \ win-64 \ prettyplotlib-0.1.3-py27_0.tar.bz2

वह tar.bz2 फ़ाइल वह बिल्ड है जिसे आपको वास्तव में स्थापित करने की आवश्यकता है।

2) conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

इन चरणों के बाद मैंने एनाकोंडा के साथ आने वाले कई पैकेज स्थापित करने के लिए सफलतापूर्वक कोंडा का उपयोग नहीं किया है। पहले, मैंने इनमें से कुछ को पाइप का उपयोग करके स्थापित किया था, इसलिए मैंने कोंडा के साथ पैकेज स्थापित करने से पहले pip uninstall PACKAGE किया था। कोंडा का उपयोग करके, अब मैं कोंडा, पीआईपी, easy_install, और python setup.py install के साथ स्थापित सामानों के मिश्रण के बजाय एक ही दृष्टिकोण के साथ अपने सभी संकुल का प्रबंधन कर सकता हूं।

संदर्भ के लिए, मुझे लगता है कि @Travis Oliphant द्वारा हाल ही में ब्लॉग पोस्ट मेरे जैसे लोगों के लिए उपयोगी होगा जो मजबूत पाइथन पैकेजिंग में जो कुछ भी करते हैं उसकी सराहना नहीं करते हैं, लेकिन सामान "केवल काम करता है" की सराहना करते हैं। कोंडा आगे बढ़ने के लिए एक महान तरीका लगता है ...


conda-env अब यह स्वचालित रूप से करता है (यदि पीपी को कोंडा के साथ स्थापित किया गया था)।

आप देख सकते हैं कि पर्यावरण को माइग्रेट करने के लिए उपयोग किए जाने वाले निर्यात टूल का उपयोग करके यह कैसे काम करता है:

conda env export -n <env-name> > environment.yml

फ़ाइल दोनों कोंडा पैकेज और पीपी पैकेज सूचीबद्ध करेगा:

name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

यदि आप पर्यावरण को निर्यात करने के माध्यम से अनुसरण करना चाहते हैं, तो नई मेजबान मशीन पर environment.yml को स्थानांतरित करें और चलाएं:

conda env create -f path/to/environment.yml

conda env export पर्यावरण में सभी कोंडा और पीपी पैकेज सूचीबद्ध करता है। conda-env को conda root ( conda install -c conda conda-env ) में स्थापित किया जाना चाहिए।

वर्तमान वातावरण का वर्णन करने वाली environment.yml फ़ाइल लिखने के लिए:

conda env export > environment.yml

संदर्भ:







conda