मैं डिफ़ॉल्ट रूप से आधार वातावरण को सक्रिय करने से कोनडा को कैसे रोकूं?


234

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

मैं कॉनडा कमांड्स तक पहुंच चाहता हूं (यानी मैं चाहता हूं कि कॉनडा का रास्ता मेरे $ पेट में जुड़ जाए जो कॉनडा तब करता है जब इनिशियलाइज़ किया जाता है ताकि वह ठीक हो)।

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

जब conda initप्रॉम्प्ट से पहली बार निष्पादित किया जाता है, तो कोनडा निम्नलिखित को मेरे साथ जोड़ता है .bash_profile:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/geoff/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
else
    export PATH="/Users/geoff/anaconda2/bin:$PATH"
fi
# fi
unset __conda_setup
# <<< conda initialize <<<

अगर मैं पूरे ब्लॉक पर टिप्पणी करता हूं, तो मैं किसी भी कॉनडा वातावरण को सक्रिय नहीं कर सकता।

मैंने पूरे ब्लॉक को छोड़कर टिप्पणी करने की कोशिश की

export PATH="/Users/geoff/anaconda2/bin:$PATH"

लेकिन तब जब मैंने एक नया सत्र शुरू किया और एक वातावरण को सक्रिय करने की कोशिश की, मुझे यह त्रुटि संदेश मिला:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

यह सवाल (और अन्य लोग इसे पसंद करते हैं) सहायक हैं, लेकिन अंततः मेरे सवाल का जवाब नहीं देता है और यह लिनक्स उपयोगकर्ताओं के लिए अधिक अनुकूल है।

स्पष्टीकरण के लिए, मैं (base)अपने से दूर करने के लिए नहीं कह $PS1रहा हूं मैं कॉनडा से पूछ रहा हूं कि जब मैं एक टर्मिनल सत्र खोलता हूं तो आधार को सक्रिय नहीं करना चाहिए।


क्या आपने source activateइसके बजाय उपयोग करने की कोशिश की है ? उर्फ "oldschool विधि"
जेना

जवाबों:


481

मेरे पास कोड के समान ब्लॉक के साथ कोंडा 4.6 है जो कोंडा द्वारा जोड़ा गया था। मेरे मामले में, स्वचालित आधार सक्रियण को निष्क्रिय करने के लिए एक कॉन्डा कॉन्फ़िगरेशन सेटिंग है:

conda config --set auto_activate_base false

पहली बार जब आप इसे चलाते हैं, तो यह ./condarcआपके होम डायरेक्टरी में डिफ़ॉल्ट सेटिंग को ओवरराइड करने के लिए बना देगा ।

यह आपकी अव्यवस्था को समाप्त नहीं करेगा, .bash_profileलेकिन यह मैनुअल एडिटिंग के बिना एक क्लीनर समाधान है जो कि कंडा का प्रबंधन करता है।


1
महान। सेटिंग के बारे में आपको कहां पता चलेगा? क्योंकि मुझे परिचयात्मक ट्यूटोरियल में कहीं भी पढ़ना याद नहीं है?
DryLabRebel

6
@DryLabRebel किसी भी रिलीज़ नोट्स में इसका उल्लेख नहीं किया गया है, लेकिन आप इसे कॉन्फ़िगरेशन विकल्पों में वर्णित चलाकर पा सकते हैं conda config --describe। "Auto_activate_base" के लिए कोडबेस खोजना कॉनडा v4.6.0 दिखाता है।
19

2
उफ़, आपका सवाल छूट गया। माफ़ करना! @ मीर्व सही है कि यह विन्यास में है। मैं एक अलग मुद्दे के लिए विभिन्न विकल्पों को देख रहा था और उस विकल्प को देखा।
जिओंग

5
@DryLabRebel इंस्टॉलर द्वारा एनाकोंडा को इनिशियलाइज़ करने के बाद, यह प्रिंट करता है: यदि आप पसंद करेंगे कि कोंडा का बेस एनवायरनमेंट स्टार्टअप पर एक्टिवेट न हो, तो auto_activate_base पैरामीटर को गलत पर सेट करें: conda config --set auto_activate_base falseएनाकोंडा 3 को इंस्टॉल करने के लिए धन्यवाद!
ज़ी युआन

5
इस उत्तर के लिए बहुत बहुत धन्यवाद। IMO यह डिफ़ॉल्ट व्यवहार होना चाहिए। लिनक्स के साथ उन लोगों के लिए जो सोच रहे होंगे कि क्या उन्हें लिंक किए गए लिनक्स सवाल का पालन करना चाहिए, बस इस का पालन करें यह ओएस (लिनक्स मिंट) की परवाह किए बिना काम करता है
कामेल

22

उत्तर condaआपके द्वारा स्थापित संस्करण पर थोड़ा निर्भर करता है । Conda> = 4.4 के संस्करणों के लिए, यह deactivateआरंभीकरण के बाद conda वातावरण के लिए पर्याप्त होना चाहिए , इसलिए जोड़ें

conda deactivate

ठीक नीचे

# <<< conda initialize <<<

5
यह काम करना चाहिए, और सामान्यीकरण करना चाहिए। लेकिन मैं एक ऐसा समाधान पसंद करूंगा जो मेरी बैश प्रोफाइल को डिक्लेयर करता है, बजाय इसके जोड़ता है।
ड्राईलैब्रेल

आप अव्यवस्था कर सकते हैं या नहीं यह इस बात पर निर्भर करता है कि आपके पास कोंडा का कौन सा संस्करण है। अगर मैं सही ढंग से समझता हूं, एक बार जब आप कोंडा 4.6 होते हैं, तो आपको केवल __conda_setupफ़ंक्शन की आवश्यकता होती है, इसलिए आप पूरी चीज को 6 लाइनों तक ले सकते हैं। लेकिन मुझे नहीं लगता कि यहां
डिक्लेयर

2
लेकिन यदि आप मैन्युअल रूप से उस अनुभाग को संपादित करते हैं, तो अब conda स्वचालित रूप से इसे प्रबंधित नहीं कर सकता है। मैं सिर्फ इसे अकेले छोड़ने का सुझाव दूंगा।
darthbith

2
यह काम नहीं करता है, .zshrc में जोड़े गए कोंडा कोड के साथ एक नया शेल खोलना मुझे हर बार (आधार) एनवायरनमेंट में धकेल देता है।
मर्लिन

1
जैसा कि मर्लिन ने कहा, नए टर्मिनल शुरू करने से (बेस) फिर से होता है
jreft56

18

इसलिए अंत में मैंने पाया कि अगर मैंने कॉनडा आरंभीकरण ब्लॉक की तरह टिप्पणी की तो:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
# __conda_setup="$('/Users/geoff/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
# if [ $? -eq 0 ]; then
    # eval "$__conda_setup"
# else
if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
else
    export PATH="/Users/geoff/anaconda2/bin:$PATH"
fi
# fi
# unset __conda_setup
# <<< conda initialize <<<

यह ठीक उसी तरह काम करता है जैसा मैं चाहता हूं। यही है, यदि मैं चाहता हूं तो कोन्डा एक वातावरण को सक्रिय करने के लिए उपलब्ध है, लेकिन डिफ़ॉल्ट रूप से सक्रिय नहीं होता है।


5
दुर्भाग्य से, यदि ब्लॉक सामग्री अन्य लिपियों द्वारा प्रबंधित की जाती है, जैसा कि कोड ब्लॉक की शुरुआत में कहा गया है, तो यह परिवर्तन अन्य लिपियों के बदले या लुढ़का हुआ हो सकता है।
कुकणानी

@DryLabRebel - क्या आपको कभी एक मजबूत दृष्टिकोण मिला है जिसने rcफ़ाइल से अव्यवस्था को हटा दिया है ? मैं भी इस में दिलचस्पी होगी, सिर्फ अन्य envs की तरह conda का इलाज करने में सक्षम होने के बजाय, यह चीजों को अव्यवस्थित कर रहा है
bxx

@baxx नहीं, मैंने नहीं। यदि आप कोंडा का नवीनतम संस्करण चाहते हैं, और आप इसे काम करना चाहते हैं, तो आपको वास्तव में प्रारंभिक कमांड की आवश्यकता है।
ड्राईलैब्रेल

ठीक है, मुझे लगता है कि अगर आप सिर्फ प्रोजेक्ट डायर में कोंडा एनव को स्थापित करते हैं, तो एक ऐसा तरीका हो सकता है जो केंद्रीय स्थान पर न हो। अभी भी निश्चित नहीं है
baxx

ऐसा लगता है कि इसका उपयोग करने की तुलना में केवल गिरावट है conda config --set auto_activate_base false, क्या आप विस्तृत कर सकते हैं?
एएमसी

16

conda4.6 के बाद इसे प्राप्त करने के 3 तरीके हैं । (अंतिम विधि में सर्वोच्च प्राथमिकता है।)

  1. conda configसेटिंग बदलने के लिए उप-कमांड का उपयोग करें ।

    conda config --set auto_activate_base false
  2. वास्तव में, पूर्व conda configउप-कमांड कॉन्फ़िगरेशन फ़ाइल बदल रही है .condarc। हम .condarcसीधे संशोधित कर सकते हैं। .condarcअपने घर निर्देशिका के तहत निम्नलिखित सामग्री जोड़ें ,

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
  3. CONDA_AUTO_ACTIVATE_BASEशेल के इनिट फ़ाइल में पर्यावरण चर सेट करें । ( .bashrcबाश के लिए, .zshrczsh के लिए)

    CONDA_AUTO_ACTIVATE_BASE=false

    condarcफ़ाइल-आधारित कॉन्फ़िगरेशन पैरामीटर नाम से पर्यावरण चर पैरामीटर नाम में परिवर्तित करने के लिए, नाम को सभी अपरकेस और प्रीपेन्ड करें CONDA_ । उदाहरण के लिए, कॉन्डा के always_yesकॉन्फ़िगरेशन पैरामीटर को CONDA_ALWAYS_YESपर्यावरण चर का उपयोग करके निर्दिष्ट किया जा सकता है ।

    पर्यावरण सेटिंग्स फ़ाइल में संबंधित सेटिंग्स पर पूर्वता लेती हैं.condarc

संदर्भ


बहुत बढ़िया जवाब। मैं इस तरह के व्यवहार को नियंत्रित करने के लिए स्क्रिप्ट के भीतर env var पद्धति का उपयोग करता हूं:export CONDA_AUTO_ACTIVATE_BASE=false; eval "$(conda shell.bash hook)"
केविन ओलरी

मुझे export CONDA_AUTO_ACTIVATE_BASE=falseअपने .zshrc में विकल्प 3 में काम करने के लिए जोड़ना था ।
मानतानीस

9

टर्मिनल में कोंडा बेस पर्यावरण के ऑटो सक्रियण को निष्क्रिय करने के लिए:

conda config --set auto_activate_base false

कोंडा बेस पर्यावरण को सक्रिय करने के लिए:

conda activate

3
अरे, यह उत्तर सही है, लेकिन वस्तुतः स्वीकृत उत्तर के समान है। मेरा सवाल कॉन्डो को सक्रिय करने से संबंधित नहीं है, यह उन चीजों में से एक है जो आप ट्यूटोरियल से गुजरते समय सीखते हैं। पिछले उत्तर में अभी तक प्रदान नहीं की गई कुछ उपयोगी, प्रासंगिक जानकारी जोड़ने पर विचार करें।
ड्राईलैब्रेल

2
मैं देख रहा था कि ऑटो को अक्षम करने के बाद मैन्युअल रूप से कैसे सक्रिय किया जाए। धन्यवाद!
सतर्क

इससे मदद मिली। मैं यह भी देख रहा था कि ऑटो-एक्टिवेट को अक्षम करने के बाद मैं खुद कोंडा को कैसे सक्रिय करूं।
क्रिस नजगुना

1

एक बात जो इंगित नहीं की गई है, वह यह है कि सक्रिय वातावरण न होने और आधार वातावरण को सक्रिय करने के बीच कोई अंतर नहीं है, यदि आप सिर्फ कोनडा (पायथन) की स्क्रिप्ट निर्देशिका से आवेदन चलाना चाहते हैं (जैसा कि @DryLabbebel चाहते हैं) )।

आप कॉन्डा के माध्यम से इंस्टॉल और अनइंस्टॉल कर सकते हैं और कॉन्डा आधार वातावरण को सक्रिय दिखाता है - जो अनिवार्य रूप से यह है:

> echo $Env:CONDA_DEFAULT_ENV
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current

> conda activate
> echo $Env:CONDA_DEFAULT_ENV
base
> conda env list
# conda environments:
#
base                  *  F:\scoop\apps\miniconda3\current

0

यदि आप अपने bashrc को सरल रखना चाहते हैं, तो आप सभी conda initउत्पन्न अव्यवस्थाओं को दूर कर सकते हैं , और केवल एक पंक्ति रख सकते हैं:

. "/Users/geoff/anaconda2/etc/profile.d/conda.sh"

देख अपने शेल में कोंडा को सक्षम करने के लिए अनुशंसित परिवर्तन

यह आधार वातावरण को सक्रिय किए बिना कोंडा कमांड को उपलब्ध कराएगा।

यदि आप अपने bashrc का उपयोग अन्य प्रणालियों पर करना चाहते हैं जहाँ conda एक ही पथ में स्थापित नहीं है, तो आप त्रुटि संदेशों से बचने के लिए if/ fiपंक्तियों को भी रख सकते हैं , अर्थात:

if [ -f "/Users/geoff/anaconda2/etc/profile.d/conda.sh" ]; then
    . "/Users/geoff/anaconda2/etc/profile.d/conda.sh"
fi

अगर आप अपने bashrc को सरल रखना चाहते हैं, तो आप सभी conda init जनित अव्यवस्था को दूर कर सकते हैं, और केवल एक ही लाइन रख सकते हैं "अव्यवस्था" जो कहती है !! इस ब्लॉक के भीतर सामग्री 'कोंडा इनिट' द्वारा प्रबंधित की जाती है !! ? केवल उपयुक्त कोनडा सेटिंग / कॉन्फिगरेशन विकल्प को बदलने के बजाय ऐसा करने से क्या फायदा है?
एएमसी

-2

यह हाल के एनाकोंडा का एक बग हो सकता है। मेरे लिए क्या काम करता है:

चरण 1:, vim /anaconda/bin/activateयह दिखाता है:

 #!/bin/sh                                                                                
 _CONDA_ROOT="/anaconda"
 # Copyright (C) 2012 Anaconda, Inc
 # SPDX-License-Identifier: BSD-3-Clause
 \. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
 conda activate "$@"

चरण 2: अंतिम पंक्ति पर टिप्पणी करें: # conda activate "$@"


-2

मैंने उसी समस्या का सामना किया। प्रारंभ में मैंने .bash_profile को हटा दिया लेकिन यह सही तरीका नहीं है। एनाकोंडा स्थापित करने के बाद यह इस समस्या के लिए निर्देशों को स्पष्ट रूप से दिखा रहा है। एनाकोंडा द्वारा प्रदान किए गए समाधान के लिए कृपया छवि की जाँच करें

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