【发布时间】:2022-01-20 23:54:05
【问题描述】:
我每天通过 SSH 连接到的服务器中有一些 conda 虚拟环境。从终端登录并列出环境给了我以下信息:
(base) [rgr6291@klc0201 ~]$ conda env list
# conda environments:
#
fomc /home/rgr6291/.conda/envs/fomc
r_conda /home/rgr6291/.conda/envs/r_conda
rfe_paper /home/rgr6291/.conda/envs/rfe_paper
base * /software/python-anaconda3/2019.10
所以我有基础环境和三个虚拟环境。我通常使用 Visual Studio Code 和远程 SSH 扩展在服务器上编辑代码。当提示我选择 Python 解释器时,VS Code 会识别所有这些环境:
事实证明,无论我是否在 fomc 环境中,从 VS Code 启动终端窗口都会导致不同的行为。
如果我选择 rfe_paper 环境并使用 VS Code 启动一个新终端,我会得到以下自动输出:
source activate rfe_paper
(base) [rgr6291@klc0201 HF_FOMC]$ source activate rfe_paper
(rfe_paper) [rgr6291@klc0201 HF_FOMC]$
它启动终端,然后激活所需的环境。但是,fomc 环境中的相同过程会导致不同的结果:
source /home/rgr6291/.conda/envs/fomc/bin/activate
(base) [rgr6291@klc0201 HF_FOMC]$ source /home/rgr6291/.conda/envs/fomc/bin/activate
(base) [rgr6291@klc0201 HF_FOMC]$ conda activate fomc
(base) [rgr6291@klc0201 HF_FOMC]$ conda env list
# conda environments:
#
base * /home/rgr6291/.conda/envs/fomc
r_conda /home/rgr6291/.conda/envs/r_conda
rfe_paper /home/rgr6291/.conda/envs/rfe_paper
请注意,开头有一个额外的source 调用。不知何故,VS Code 被误导并认为fomc 环境是基础环境。
- 可能是什么原因造成的?
- 如何解决这个问题?
昨天运行良好,但今天似乎坏了。唯一的不同是我今天早上将fomc中安装的包导出到了一个yml文件。我不知道这会如何影响行为。
顺便说一下,我也报告以下内容。这是~/.conda/envs/fomc/bin/activate的内容:
#!/bin/sh
_CONDA_ROOT="/home/rgr6291/.conda/envs/fomc"
# Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause
\. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
conda activate "$@"
我认为 CONDA_ROOT 是错误的,但我不知道它实际上应该是什么。
提前致谢。
【问题讨论】:
-
这确实很奇怪。
fomc环境是否有可能安装了condapackage?通常只有 base 应该拥有它。 -
你是对的@merv。我完全不知道为什么要安装它,但确实是这样。我想我应该关闭这个问题。或者删除它。我不确定这里的正确程序是什么。
-
如果你愿意,我写了一些东西可以试试。但是,我会说我不清楚这是一个如此大的问题。除了
conda env list和一些环境变量不正常之外,真的对功能有任何实质性影响吗? -
@merv 不是真的,功能没有变化。感谢您的回答!
标签: python visual-studio-code terminal virtualenv conda