【问题标题】:conda environment has no name visible in conda env list - how do I activate it at the shell?conda 环境在 conda env 列表中没有可见的名称 - 如何在 shell 中激活它?
【发布时间】:2019-12-22 22:12:56
【问题描述】:

我在 anaconda-navigator 中创建了一个名为 B3 的环境。如果从导航器中启动它就可以正常工作。

但是,当我想在 shell 中激活它时,我得到“找不到 environmnet B3”。

如果我使用 conda env list,环境是可见的,但它的名称是空白的。如果我尝试改用文件路径,我会得到“不是 conda 环境”。

为什么缺少名称,如何从 shell 激活它?

【问题讨论】:

  • 你做得对,只是看起来像一个错字:anaconda2,而路径中应该是anaconda3
  • 我真正需要知道的是为什么它没有名称以及如何使用 conda activate B3 启动它 - 正如我所期望的那样。输入整个路径很痛苦。
  • 也许找出正在使用的conda。看起来 anaconda 2 和 anaconda3 或 miniconda3 设置之间可能存在混淆,每个设置可能有不同的默认值。如果我使用/opt/anaconda3/bin/conda env list vs ~/anaconda/bin/conda env list,我会得到不同的缺失别名

标签: python anaconda conda


【解决方案1】:

基于名称的 Conda 环境引用仅适用于位于envs_dirs 配置选项中列出的目录之一的环境(请参阅conda config --describe envs_dirs)。默认情况下,这对应于 Conda 安装中的 envs/ 子目录。如果您在这些目录之一之外创建环境,则不能使用名称来引用它。相反,必须通过它的路径来激活它:

选项 0:通过路径激活(修复 OP 的错字)

conda activate /home/julianhatwell/anaconda3/envs/B3

请注意,OP 最初有一个错字(anaconda2 应该是anaconda3)。在指出这一点后(见 cmets to question),提问者反而要求回答:

如何将无名环境转换为有名环境?

转换为命名环境

以下是启用基于名称的激活的可能方法。

选项1:克隆到目录

使用conda activate B3 的一个选项是在默认目录中重新创建您的B3 环境。您可以使用--clone 标志来完成此操作。

conda create --clone path/to/the/nameless_env -n named_env

选项2:添加父目录

或者,您可以将相关环境的父目录添加到envs_dirs 配置选项。

conda config --append envs_dirs /path/to/the/parent_dir

另一种可能性是在一个envs_dirs 文件夹中创建指向环境文件夹的符号链接。它似乎有效,但它不是一种常见的做法,因此它可能具有未报告的缺点。

【讨论】:

  • 谢谢。你能说为什么它是在默认目录之外创建的吗?这是我在 anaconda-navigator 中手动创建的唯一一个。其余的由我的笔记本电脑供应商提供的脚本完成。为什么 conda create 没有将我的环境放入默认目录?
  • @julianhatwell 我无法给出明确的答案。我将首先检查 Conda 特定变量在两种上下文中是否不同。即,检查conda info 可能带有详细标志。
  • @Cos --clone 参数接受路径,例如,conda create --clone path/to/the/nameless_env -n named_env
  • 我相信上面的选项2应该是conda config --append envs_dirs /path/to/the/parent_dir
  • @merv:你说得对,这正是我的意图。如果他们找到一个好的答案,人们并不关心最初的问题是什么;-)
【解决方案2】:

当您使用 --prefix 创建 conda env 时,它不会有名称, 并给一个人做以下事情:

# ex path: /Users/username/opt/miniconda3/envs/`
conda config --append envs_dirs <path to env folder here>

激活环境:

conda activate <name of the env>

【讨论】:

    【解决方案3】:

    要获取可用环境的列表,请使用:

    conda env list
    

    要激活 nameless 环境,请使用:

    conda activate <Folder>
    

    【讨论】:

    • 这个技巧让我省去了很多重新创建虚拟机、安装 GPU 驱动程序等的麻烦。非常感谢!
    • 次要注意:conda env list 通过检查envs_dirs 目录和用户特定 文件~/.conda/environments.txt 工作。每当用户通过路径创建或激活环境时,Conda 都会使用该文件跟踪基于路径的环境。除非用户激活它们,否则 Conda 永远不会知道卷上可能还有其他有效的基于路径的环境。例如,不会自动找到其他用户创建的环境。
    【解决方案4】:

    很可能您将 ps1 值设置为 False,这可以随着 conda 环境的变化而迅速更改。

    从你的 ubuntu 终端检查运行:

    $ conda config --show | grep changeps1
    

    并将其设置为 True 使用:

    $ conda config --set changeps1 True
    

    在此之后,您应该会在每个提示的开头看到当前激活的 conda 环境名称。 PS - 您可能需要关闭并重新打开终端才能使其生效。

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多