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


141

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

मेरे द्वारा कभी भी स्थापित किए गए प्रत्येक पैकेज का उपयोग करना pip freezeऔर pip listबस सूचीबद्ध करना ।

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


7
के pipसाथ स्थापित का उपयोग करें conda, जैसे ~/anaconda/bin/pip; condaवातावरण में पैकेज स्थापित करने के लिए इसका उपयोग करें , साथ ही साथ pipऔर इसके साथ स्थापित पैकेजों के मिलन को देखने के लिए conda install
osa

7
conda listअब कुछ समय के लिए अजगर पैकेज शामिल किए गए हैं जो अन्य साधनों द्वारा स्थापित किए गए थे (जैसे पाइप, आसान-स्थापित, सीधे साथ python setup.py install, आदि)
kalefranz

1
अपने पाइप को अपग्रेड न करें या यह निर्यात बंद हो जाएगा
एंड्रयू कासिडी

जवाबों:


120

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

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

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

64

condaकेवल उन पैकेजों का ट्रैक रखेगा जो इसे इंस्टॉल किए गए हैं। और pipआपको वे पैकेज देंगे जो या तो इंस्टॉलर का उपयोग करके स्थापित किए गए थे pipया उन्होंने setuptoolsअपने setup.pyइतने कॉन्डा बिल्ड में इस्तेमाल किया था अंडे की जानकारी उत्पन्न की। तो आपके पास मूल रूप से तीन विकल्प हैं।

  1. आप के मिलन ले जा सकते हैं conda listऔर pip freezeऔर संकुल का उपयोग कर स्थापित किए गए प्रबंधन conda(में है कि शो conda listके साथ) condaपैकेज प्रबंधक और लोगों को उस के साथ स्थापित कर रहे हैं pip(में है कि शो pip freezeमें नहीं बल्कि conda listके साथ) pip

  2. केवल अपने वातावरण में स्थापित करें python, pipऔर distributeपैकेज और सब कुछ के साथ प्रबंधित करें pip। (यह तुच्छ नहीं है अगर आप विंडोज पर हैं ...)

  3. अपने खुद के condaपैकेज बनाएँ , और सब कुछ के साथ प्रबंधित करें conda

मैं व्यक्तिगत रूप से तीसरे विकल्प की सिफारिश करूंगा क्योंकि condaपैकेज बनाना बहुत आसान है। सातत्य के गीथूब खाते पर उदाहरण व्यंजनों की एक गिट रिपॉजिटरी है। लेकिन यह आमतौर पर उबलता है:

 conda skeleton pypi PACKAGE
 conda build PACKAGE

या केवल:

conda pipbuild PACKAGE

जब आपने उन्हें एक बार बनाया है, तो आप उन्हें https://binstar.org/ पर अपलोड कर सकते हैं और बस वहां से इंस्टॉल कर सकते हैं।

तो आप सब कुछ का उपयोग कर प्रबंधित होगा conda


3
मैं बस करने की कोशिश की ~/anaconda/bin/pip install memory-profilerऔर conda install numba, और वे दोनों में दिखाया जाता है ~/anaconda/bin/pip freeze
osa

2
"निरंतरता के जीथब खाते पर उदाहरण व्यंजनों की गिट रिपॉजिटरी" क्या आपका मतलब है github.com/ContinuumIO/anaconda-recipes ? कृपया लिंक आप कर सकते हैं यदि
endolith

यह वास्तव में पैकेज स्थापित नहीं करता है ताकि आप इसे आयात कर सकें, हालांकि। conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2जैसा कि आपने बताया है कि stackoverflow.com/a/20750388/125507
एंडोलिथ

मैं कहता हूं कि पहले हमेशा conda install python=3.x.yअपने कोंडा वातावरण में रहें, जैसे कि बाद में स्थापित पाइप कोंडा स्थापित पाइप से गुजरते हैं।
उस्मान संगत

24

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

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


2
मैं यह बताना चाहता हूं कि यह पहले से ही conda 2.2.3 (और शायद उससे पहले) में काम कर रहा है। जिस तरह से यह काम करता है कि अगर आप करने की कोशिश करते हैं conda install packageऔर इसे एक कोंडा नुस्खा नहीं मिल सकता है, तो वह इसे स्थापित करने की कोशिश करता है pip(और फिर इसे ट्रैक करता है)। यहां तक ​​कि pipअगर आपके वातावरण में नहीं है तो यह मददगार है । आपके सभी काम के लिए धन्यवाद ट्रैविस!
जोर्गेका

5
स्पष्टता, क्योंकि मैंने इसे कई बार गलत समझा है। @ ट्राविस का मतलब है कि मुझे लगता है कि अगर कोई एक कोंडा के अंदर चल रहा है, तो चल रहा पाइप पहले कोंडा पैकेज की खोज करेगा? रिवर्स निश्चित रूप से सच नहीं है - कोंपा इंस्टॉल में पीपीआई पैकेज नहीं दिखता है, यहां तक ​​कि पीआईपीआई.बिनस्टार.org पर आइटम भी नहीं हैं। यह कोंडा 3.5.2 के रूप में है।
ऐनीएजाइल

9
क्या इसे हटाया गया है? अगर मैं दौड़ता हूं, तो conda install autopep8यह मुझे "कोई पैकेज नहीं मिला" बताता है और मुझे मैन्युअल रूप से anaconda.org खोजना चाहिए।
एंडोलिथ

@AnneTheAgile running pip...भी काम नहीं करती है, यह बिल्कुल भी कोंडा पैकेज की तलाश नहीं करेगी।
वांग

16

मैंने @Viktor केर्केज़ के उत्तर का अनुसरण किया और मिश्रित सफलता पाई। मैंने पाया कि कभी-कभी यह नुस्खा

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

conda निर्माण पैकेज

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

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

1 क) conda build --build-recipe prettyplotlib

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

फ़ाइल "C: \ Anaconda \ conda-bld \ test-tmp_dir \ run_test.py", पंक्ति 23 आयात कोई नहीं SyntaxError: किसी को भी निर्दिष्ट नहीं कर सकता

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

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

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

1c) 1a से कमांड को फिर से चलाएँ, जो इस बार त्रुटि के साथ पूरा होना चाहिए। बिल्ड के अंत में आपसे पूछा जाएगा कि क्या आप बिल्ड को binstar पर अपलोड करना चाहते हैं । मैंने No दर्ज किया और फिर यह संदेश देखा:

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

$ binstar अपलोड C: \ 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 स्थापित होगा।

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


2
Conda संस्करण 3.5.2 का उपयोग करते हुए, कमांड $ conda build --build-recipe XXX; 'गैर-मान्यता प्राप्त तर्क: - निर्माण-नुस्खा' के साथ त्रुटियां। पूर्ण प्रतिक्रिया है; उपयोग: conda-build [-h] [-c] [-no-binstar-upload] [--output] [-s] [-t] [-no-test] [-V] [-q] RECIPE_PATH [RECIPE_PATH ...] conda-build: त्रुटि: गैर-मान्यता प्राप्त तर्क: --build-recipe
AnneTheAgile

10

यही कारण है कि मैंने पिकी लिखा है: http://picky.readthedocs.io/

यह एक अजगर पैकेज है जो या तो virtualenvs और conda envs में पाइप या कोंडा के साथ स्थापित पैकेज को ट्रैक करता है।


3

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

>pip install .

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

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

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

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

>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

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

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

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

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


2

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

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

conda env export > environment.yml

संदर्भ:


2

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

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

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


1

मेरा which pipपथ निम्नलिखित दिखाता है:

$ which pip
/home/kmario23/anaconda3/bin/pip

इसलिए, जो भी पैकेज मैं उपयोग कर रहा हूं, उसे उस पैकेज pip install <package-name>की सूची में प्रतिबिंबित करना होगा जब सूची का उपयोग करके निर्यात किया जाता है:

$ conda list --export > conda_list.txt

लेकिन, मैं नहीं। इसलिए, इसके बजाय मैंने कई अन्य लोगों द्वारा सुझाए अनुसार निम्न आदेश का उपयोग किया:

# get environment name by
$ conda-env list

# get list of all installed packages by (conda, pip, etc.,)
$ conda-env export -n <my-environment-name> > all_packages.yml
# if you haven't created any specific env, then just use 'root'

अब, मैं अपनी all-packages.ymlफ़ाइल में सभी संकुल देख सकता हूँ ।


1

आप नीचे दिए गए कमांड को कॉन्डा वातावरण में स्थापित करके शुरू कर सकते हैं:

conda install pip

पर्यावरण में आपकी ज़रूरत के सभी पाइप पैकेज स्थापित करके पीछा किया।

पर्यावरण उपयोग को निर्यात करने के लिए सभी कोंडा और पाइप पैकेज स्थापित करने के बाद:

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

यह फ़ोल्डर में आवश्यक फ़ाइल बनाएगा

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