Conda'nın temel ortamı varsayılan olarak etkinleştirmesini nasıl önleyebilirim?


236

Kısa süre önce anaconda2'yi Mac bilgisayarıma yükledim. Yeni bir terminal oturumu açtığımda, Conda varsayılan olarak temel ortamı etkinleştirecek şekilde yapılandırılmış.

Conda komutlarına erişmek istiyorum (yani Conda yolunun Conda başlatıldığında ne zaman bu kadar iyi başlatıldığında yaptığı $ PATH eklendi) istiyorum.

Ama normalde python'da programlamıyorum ve Conda'nın varsayılan olarak bir ortamı etkinleştirmesini istemiyorum.

Bilgi conda initisteminden ilk kez çalıştırdığınızda , Conda aşağıdakileri ekler .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 <<<

Tüm bloğu yorumlarsam, Conda ortamlarını etkinleştiremem.

Ben hariç tüm blok yorum yapmaya çalıştı

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

Ancak yeni bir oturum başlattığımda ve bir ortamı etkinleştirmeye çalıştığımda şu hata iletisini aldım:

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

Bu soru (ve bunun gibi diğerleri) faydalıdır, ancak sonuçta soruma cevap vermez ve linux kullanıcıları için daha uygundur.

Açıklama için Kaldırtmak sormuyorum (base)benim dan $PS1ben bir terminal oturumu açtığınızda ben etkinleştirmek tabanına değil Conda için soruyorum.


source activateBunun yerine kullanmaya çalıştınız mı ? aka "oldschool yöntemi"
jena

Yanıtlar:


485

Conda tarafından eklenen benzer bir kod bloğu ile conda 4.6 var. Benim durumumda, otomatik temel etkinleştirmeyi devre dışı bırakmak için bir conda yapılandırma ayarı var:

conda config --set auto_activate_base false

İlk çalıştırdığınızda, ./condarcana dizininizde varsayılanı geçersiz kılmak için bu ayarla bir a oluşturur .

Bu sizin dağınıklığınızı .bash_profileortadan kaldırmaz, ancak conda'nın yönettiği bölümü manuel olarak düzenlemeden daha temiz bir çözümdür.


1
Harika. Ayarı nereden buldunuz? Tanıtım derslerinde hiçbir yerde okumadığımı hatırlamıyor musunuz?
DryLabRebel

6
@DryLabRebel Herhangi bir Sürüm Notunda belirtilmemiştir, ancak çalıştırarak yapılandırma seçeneklerinde açıklanmıştır conda config --describe. Kod tabanında "auto_activate_base" araması Conda v4.6.0'ın giriş olduğunu gösteriyor.
merv

2
Hata! Sorunuzu kaçırdınız. Afedersiniz! @merv doğru olduğundan yapılandırmada doğru. Farklı bir sorun için farklı seçeneklere bakıyordum ve bu seçeneği gördüm.
jieong

5
@DryLabRebel Yükleyici Anaconda'yı başlattıktan sonra yazdırılır: Conda'nın temel ortamının başlangıçta etkinleştirilmemesini tercih ederseniz, auto_activate_base parametresini false olarak ayarlayın: conda config --set auto_activate_base falseAnaconda3'ü yüklediğiniz için teşekkür ederiz!
Zhi Yuan

5
Bu cevap için çok teşekkürler. IMO bu varsayılan davranış olmalıdır. Linux ile bağlantılı Linux sorusunu takip etmeleri gerekip gerekmediğini merak edenler için, sadece bunu izleyin, işletim sisteminden bağımsız olarak çalışıyor gibi görünüyor (burada Linux Mint)
Kamel

22

Cevap, biraz condaönce yüklediğiniz versiyona bağlıdır . Conda> = 4.4 sürümleri için deactivate, başlatma işleminden sonra conda ortamına yeterli olmalıdır , bu nedenle

conda deactivate

hemen altında

# <<< conda initialize <<<

5
Bu işe yaramalı ve genelleştirilmelidir. Ama bash profilimi körelten bir çözümü tercih ederdim.
DryLabRebel

Yerinden çıkıp çıkamayacağınız, hangi conda sürümüne sahip olduğunuza bağlıdır. Doğru anlarsam, conda 4.6'ya sahip olduğunuzda, sadece __conda_setupişleve ihtiyacınız vardır , böylece her şeyi 6 satıra kadar alabilirsiniz. Ama burada
çalkalanacak

2
Ancak bu bölümü manuel olarak düzenlerseniz, conda artık otomatik olarak yönetemez. Sadece rahat bırakmanızı öneririm.
19th

2
Bu işe yaramaz .zshrc içinde eklenen conda kodu ile yeni bir kabuk açılış her zaman (temel) çevreye itilir.
Merlin

1
tam olarak Merlin'in söylediği gibi, yeni terminalin başlatılması tekrar (temel)
jreft56

18

Sonunda Conda başlatma bloğunu böyle yorumladıysam şöyle buldum:

# >>> 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 <<<

Tam istediğim gibi çalışıyor. Yani, Conda istersem bir ortamı etkinleştirmek için kullanılabilir, ancak varsayılan olarak etkinleştirilmez.


5
Ne yazık ki, blok içeriği kod bloğunun başında belirtildiği gibi diğer komut dosyaları tarafından yönetiliyorsa, bu değişiklik başka komut dosyaları tarafından değiştirilebilir veya geri alınabilir.
Kukanani

@DryLabRebel - dağınıklığı rcdosyadan kaldıran sağlam bir yaklaşım buldunuz mu? Ben de bu ilgilenen olur, sadece şeyleri kadar dağınık daha ziyade, conda diğer envs gibi tedavi edebilmek
baxx

@baxx hayır görmedim. Conda'nın en son sürümünü ve çalışmasını istiyorsanız, gerçekten başlatma komutlarına ihtiyacınız vardır.
DryLabRebel

Tamam şerefe, ben sadece merkezi bir yerde değil, proje dir conda env yüklerseniz bir yol olabilir hissediyorum. Çok emin değilim
baxx

Bu, kullanımı ile karşılaştırıldığında sadece olumsuz yanları var gibi görünüyor conda config --set auto_activate_base false, ayrıntılı olabilir misiniz?
AMC

16

4.6'dan sonra bunu başarmanın 3 yolu vardır conda. (Son yöntem en yüksek önceliğe sahiptir.)

  1. conda configAyarı değiştirmek için alt komutu kullanın .

    conda config --set auto_activate_base false
  2. Aslında, eski conda configalt komut yapılandırma dosyasını değiştiriyor .condarc. .condarcDoğrudan değiştirebiliriz . .condarcAna dizininizin altına aşağıdaki içeriği ekleyin ,

    # auto_activate_base (bool)
    #   Automatically activate the base environment during shell
    #   initialization. for `conda init`
    auto_activate_base: false
  3. Ortam değişkenini CONDA_AUTO_ACTIVATE_BASEkabuğun init dosyasında ayarlayın. ( .bashrcbash .zshrciçin, zsh için)

    CONDA_AUTO_ACTIVATE_BASE=false

    Dan dönüştürmek için condarcortam değişkeni parametre adının dosya tabanlı konfigürasyon parametresi adı, ad, tüm yapmak büyük ve başa getirebilir CONDA_ . Örneğin, conda'nın always_yesyapılandırma parametresi bir CONDA_ALWAYS_YESortam değişkeni kullanılarak belirtilebilir .

    Ortam ayarları , dosyadaki karşılık gelen ayarlara göre önceliklidir.condarc .

Referanslar


mükemmel cevap. ben bu gibi davranışı kontrol etmek için script içindeki env var yöntemini kullanın:export CONDA_AUTO_ACTIVATE_BASE=false; eval "$(conda shell.bash hook)"
Kevin Olree

export CONDA_AUTO_ACTIVATE_BASE=falseSeçenek 3'ün çalışması için .zshrc'ye eklemek zorunda kaldım.
normanius

9

Terminalde conda base ortamının otomatik etkinleştirilmesini devre dışı bırakmak için:

conda config --set auto_activate_base false

Conda base ortamını etkinleştirmek için:

conda activate

3
Hey, Bu cevap doğrudur, ancak kabul edilen cevapla hemen hemen aynıdır. Sorum kınamak aktive ile ilgili değil, bu öğreticiler geçerken öğrendiğiniz ilk şeylerden biri. Önceki yanıtlarda henüz verilmemiş bazı yararlı ve alakalı bilgileri eklemeyi düşünün.
DryLabRebel

2
Otomatik devre dışı bırakıldıktan sonra manuel olarak nasıl etkinleştirileceğini arıyordum. Teşekkürler!
eigil

Bu yardımcı oldu. Ayrıca otomatik etkinleştirmeyi devre dışı bıraktıktan sonra conda'yı manuel olarak nasıl etkinleştireceğimi de arıyordum.
Chris Njuguna

1

İşaret edilmeyen bir şey, sadece Conda'nın (Python'un) komut dosyaları dizininden uygulamaları çalıştırmak istiyorsanız (@DryLabRebel'nin istediği gibi) ).

Conda ile yükleyip kaldırabilirsiniz ve conda temel ortamı etkin olarak gösterir - esasen:

> 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'nizi basit tutmak istiyorsanız, conda initoluşturulan tüm dağınıklığı kaldırabilir ve yalnızca tek bir satır tutabilirsiniz:

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

Bkz sizin kabuğunda Conda etkinleştirmek için Önerilen değişiklik .

Bu, temel ortamı etkinleştirmeden conda komutunu kullanılabilir hale getirecektir.

Bashrc'nizi conda'nın aynı yolda yüklü olmadığı diğer sistemlerde kullanmak istiyorsanız, hata mesajlarından kaçınmak için if/ fisatırlarını da saklayabilirsiniz , örneğin:

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

Eğer bashrc basit tutmak istiyorsanız, tüm conda init oluşturulan dağınıklığı kaldırabilir ve sadece tek bir satır tutmak "dağınıklık" diyor !! Bu blok içindeki içerikler 'conda init' tarafından yönetilmektedir !! ? Sadece uygun Conda ayarı / yapılandırma seçeneğini değiştirmek yerine bunu yapmanın avantajı nedir?
AMC

-2

Bu son anaconda'nın bir hatası olabilir. Benim için ne işe yarar:

step1:, vim /anaconda/bin/activateşunu gösterir:

 #!/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 "$@"

step2: son satırı yorumlayın: # conda activate "$@"


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.