VSCode 终端中的 conda activate 未正确更新 PATH
PATH not updated correctly from conda activate in VSCode's terminal
我正在使用 VSCodes 终端面板。我激活了一个 conda 环境。由于某种原因,python
命令仍然设置为 /usr/bin/python
,而不是 conda 环境的正确路径。
% conda activate myenv
% which python
/usr/bin/python
正确的 anaconda 环境目录似乎在 $PATH
变量中,但 /usr/bin
似乎优先于它。
当我通过 OS 打开标准终端时,行为如我所料。
% conda activate myenv
% which python
/Users/cpl/anaconda3/envs/myenv/bin/python
请注意:我已经将 VSCode 首选项键 python.pythonPath
设置为 /Users/cpl/anaconda3/envs/myenv/bin/python
,并且我认为它可以正常工作。当我通过右键单击并选择 Run Python File In Terminal
运行 文件时,将执行正确的 python (来自 conda 环境)。我的问题是直接使用VSCode终端执行python.
我的shell是zsh,我用的是OSX。有什么建议吗?
我不使用 zsh,但我 运行 在 bash 中遇到过这个问题,我相信原因是一样的。
Conda 最近更改了 "official" 激活环境的方法,如本期所述:https://github.com/Microsoft/vscode-python/issues/1882
之前,您需要修改 .bashrc
/.zshrc
以在 PATH
前面加上 conda 的 activate
脚本的目录,然后通过键入 source activate name_of_env
。 VSCode-Python 通过将此命令发送到 shell 来激活 conda 终端 — 带有可见的回显,就像您自己输入的一样。
新方法是在 .bashrc
中获取 $HOME/anaconda3/etc/profile.d/conda.sh
,然后使用 conda activate name_of_env
激活环境,这是您看到的在专用终端中正常工作的行为。 VSCode-Python 尚不支持此功能,而且 Windows 上的跨平台支持似乎存在问题,这使过渡变得复杂。
目前最好的解决方案是忽略 conda activate
的 "correct" 方法并始终使用旧的 source activate name_of_env
,它仍然有效(如果您的 PATH
设置包括 $HOME/anaconda3/bin
).
下面的黑魔法可能有用:-
在我的 Big Sur 中,我将以下空条目添加到我的 settings.json - 可以在 File(Windows)/Code(Mac)>Preferences>Settings 中找到-- 单击任何 link 声明的“在 settings.json 中编辑”
"terminal.integrated.env.osx": {
"PATH": ""
}
祝一切顺利!
此行为在 VSCode 文档中进行了解释:
Why are there duplicate paths in the terminal's $PATH environment variable and/or why are they reversed?#
听起来 VSCode 将 运行 你的 .zshrc 在 MacOS 中两次,与 conda 生成的 PATH
变量定义冲突。
上面link中列出了两种解决方案。对我有用的方法是设置 VSCode 设置 "terminal.integrated.inheritEnv": false
。该文档警告说,如果您这样做,您的所有环境变量都将被删除。但是,我发现我仍然在 .zshrc
文件中定义了我的自定义变量。
值得注意的是,VSCode 的最新版本会在检测到您使用的是 conda 环境时提示您,并建议进行此更改。
如果以后有其他人最终对这个特定问题摸不着头脑,我发现了另一个罪魁祸首:
终端>集成>环境:启用持久会话
我怀疑发生的事情是在您更新系统路径后,VScode 将旧路径缓存在终端中并保留它。在这种情况下,它会保留旧的 python 路径而不是新的 conda 路径。
关闭此选项并重新启动 VSCode 会清除缓存,并加载新路径。您也可以在完成后重新打开此选项。
我正在使用 VSCodes 终端面板。我激活了一个 conda 环境。由于某种原因,python
命令仍然设置为 /usr/bin/python
,而不是 conda 环境的正确路径。
% conda activate myenv
% which python
/usr/bin/python
正确的 anaconda 环境目录似乎在 $PATH
变量中,但 /usr/bin
似乎优先于它。
当我通过 OS 打开标准终端时,行为如我所料。
% conda activate myenv
% which python
/Users/cpl/anaconda3/envs/myenv/bin/python
请注意:我已经将 VSCode 首选项键 python.pythonPath
设置为 /Users/cpl/anaconda3/envs/myenv/bin/python
,并且我认为它可以正常工作。当我通过右键单击并选择 Run Python File In Terminal
运行 文件时,将执行正确的 python (来自 conda 环境)。我的问题是直接使用VSCode终端执行python.
我的shell是zsh,我用的是OSX。有什么建议吗?
我不使用 zsh,但我 运行 在 bash 中遇到过这个问题,我相信原因是一样的。
Conda 最近更改了 "official" 激活环境的方法,如本期所述:https://github.com/Microsoft/vscode-python/issues/1882
之前,您需要修改 .bashrc
/.zshrc
以在 PATH
前面加上 conda 的 activate
脚本的目录,然后通过键入 source activate name_of_env
。 VSCode-Python 通过将此命令发送到 shell 来激活 conda 终端 — 带有可见的回显,就像您自己输入的一样。
新方法是在 .bashrc
中获取 $HOME/anaconda3/etc/profile.d/conda.sh
,然后使用 conda activate name_of_env
激活环境,这是您看到的在专用终端中正常工作的行为。 VSCode-Python 尚不支持此功能,而且 Windows 上的跨平台支持似乎存在问题,这使过渡变得复杂。
目前最好的解决方案是忽略 conda activate
的 "correct" 方法并始终使用旧的 source activate name_of_env
,它仍然有效(如果您的 PATH
设置包括 $HOME/anaconda3/bin
).
下面的黑魔法可能有用:-
在我的 Big Sur 中,我将以下空条目添加到我的 settings.json - 可以在 File(Windows)/Code(Mac)>Preferences>Settings 中找到-- 单击任何 link 声明的“在 settings.json 中编辑”
"terminal.integrated.env.osx": {
"PATH": ""
}
祝一切顺利!
此行为在 VSCode 文档中进行了解释: Why are there duplicate paths in the terminal's $PATH environment variable and/or why are they reversed?#
听起来 VSCode 将 运行 你的 .zshrc 在 MacOS 中两次,与 conda 生成的 PATH
变量定义冲突。
上面link中列出了两种解决方案。对我有用的方法是设置 VSCode 设置 "terminal.integrated.inheritEnv": false
。该文档警告说,如果您这样做,您的所有环境变量都将被删除。但是,我发现我仍然在 .zshrc
文件中定义了我的自定义变量。
值得注意的是,VSCode 的最新版本会在检测到您使用的是 conda 环境时提示您,并建议进行此更改。
如果以后有其他人最终对这个特定问题摸不着头脑,我发现了另一个罪魁祸首:
我怀疑发生的事情是在您更新系统路径后,VScode 将旧路径缓存在终端中并保留它。在这种情况下,它会保留旧的 python 路径而不是新的 conda 路径。
关闭此选项并重新启动 VSCode 会清除缓存,并加载新路径。您也可以在完成后重新打开此选项。