默认情况下,conda命令在conda环境中不可用

时间:2018-10-11 16:01:58

标签: python conda

为什么我不能从conda环境中更新conda,但是可以使用它?

示例

我可以从conda更新root

[ravas@localhost ~]$ source activate
(base) [ravas@localhost ~]$ conda update conda
Solving environment: done

# All requested packages already installed.

我无法从p36更新它:

(base) [ravas@localhost ~]$ source activate p36
(p36) [ravas@localhost ~]$ conda update conda

PackageNotInstalledError: Package is not installed in prefix.
  prefix: /home/ravas/miniconda3/envs/p36
  package name: conda

这似乎是由于p36中未安装conda造成的。

(base) [ravas@localhost ~]$ conda list | grep conda
# packages in environment at /home/ravas/miniconda3:
anaconda-client           1.7.1                    py37_0  
anaconda-navigator        1.9.2                    py37_0  
conda                     4.5.11                   py37_0  
conda-env                 2.6.0                         1  

(p36) [ravas@localhost ~]$ conda list | grep conda
# packages in environment at /home/ravas/miniconda3/envs/p36:
anaconda                  5.3.0                    py36_0  
anaconda-client           1.7.2                    py36_0  
anaconda-project          0.8.2                    py36_0  
pdfminer.six              20170720                 py36_0    conda-forg

但是,我可以从p36使用conda

(p36) [ravas@localhost ~]$ conda update anaconda
Solving environment: done

# All requested packages already installed.

那是为什么?

2 个答案:

答案 0 :(得分:1)

这是外壳程序(Bash,zsh,csh,fish等)如何找到要执行的程序的结果。 (shell是正在运行以处理您在终端中键入的命令的程序)。该外壳程序在PATH环境变量中指定的文件夹中查找可执行文件。它按照在该变量中指定的顺序搜索这些文件夹。如果您在激活环境的情况下查看PATH的内容,则其外观应类似于

$ echo $PATH
/home/ravas/miniconda3/envs/p36/bin:/home/ravas/miniconda3/bin:...

当Shell尝试找到conda可执行文件时,它首先在环境目录中查找;当找不到它时,它会在base目录中找到它!

答案 1 :(得分:1)

conda未安装在新环境中。但是您可以在这样的派生环境中获得一个conda

  • 激活基本环境
  • 激活您的其他环境
  • 运行conda install conda

现在您在该其他环境中拥有一个conda,并且可以照常使用该环境。