为什么 VS Code 调用错误的虚拟环境作为基础?
Why is VS Code calling the wrong virtual environment as base?
我每天通过 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 代码和远程 SSH 扩展在服务器上编辑代码。当系统提示我 select Python 解释器时,VS Code 识别所有这些环境:
事实证明,无论我是否在 fomc
环境中,从 VS Code 启动终端 window 都会导致不同的行为。
如果我 select,比如 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 是错误的,但我不知道它应该是什么。
提前致谢。
⚠️ Caution: This is an untested recommendation. Please make sure the whole procedure is clear before attempting. Be sure to back up any files before changing them!
我个人没有遇到过这种情况,但我怀疑解决它需要从 fomc 环境中删除 conda
包。这可能就足够了;但确保 .bashrc
或 .bash_profile
中的 Conda 初始化代码设置为使用实际的 base 环境而不是 [= fomc 环境中的 55=] 点。
因此,我建议首先检查 .bashrc
和 .bash_profile
并确保它们没有任何引用 fomc 的路径。如果他们这样做,那么整个初始化块,开始和结束于
# >>> conda initialize >>>
...
# <<< conda initialize <<<
应该被删除,然后应该重新运行 conda init
命令 使用真实的 base 环境 active,或者使用base conda
.
的完整路径
完成后,重新启动 shell 并验证 conda
是否仍然有效并指向 base(即检查 which conda
).然后尝试从 fomc 中删除 conda
包,这样做 而 fomc活跃,即
conda remove -n fomc conda
应该是这样。
我每天通过 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 代码和远程 SSH 扩展在服务器上编辑代码。当系统提示我 select Python 解释器时,VS Code 识别所有这些环境:
事实证明,无论我是否在 fomc
环境中,从 VS Code 启动终端 window 都会导致不同的行为。
如果我 select,比如 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 是错误的,但我不知道它应该是什么。
提前致谢。
⚠️ Caution: This is an untested recommendation. Please make sure the whole procedure is clear before attempting. Be sure to back up any files before changing them!
我个人没有遇到过这种情况,但我怀疑解决它需要从 fomc 环境中删除 conda
包。这可能就足够了;但确保 .bashrc
或 .bash_profile
中的 Conda 初始化代码设置为使用实际的 base 环境而不是 [= fomc 环境中的 55=] 点。
因此,我建议首先检查 .bashrc
和 .bash_profile
并确保它们没有任何引用 fomc 的路径。如果他们这样做,那么整个初始化块,开始和结束于
# >>> conda initialize >>>
...
# <<< conda initialize <<<
应该被删除,然后应该重新运行 conda init
命令 使用真实的 base 环境 active,或者使用base conda
.
完成后,重新启动 shell 并验证 conda
是否仍然有效并指向 base(即检查 which conda
).然后尝试从 fomc 中删除 conda
包,这样做 而 fomc活跃,即
conda remove -n fomc conda
应该是这样。