【问题标题】:How to have conda commands match behaviour in Vscode's integrated terminal and normal terminal?如何让 conda 命令匹配 Vscode 的集成终端和普通终端中的行为?
【发布时间】:2020-08-11 11:10:16
【问题描述】:

我被推迟了,因为conda info --envs 显示的内容与我的终端显示的不同。终端:

(automl) brandBrandoParetoopareto~/anaconda3/envs $ conda info --envs
# conda environments:
#
base                     /Users/brandBrandoParetoopareto/anaconda3
automl                *  /Users/brandBrandoParetoopareto/anaconda3/envs/automl
coqgym                   /Users/brandBrandoParetoopareto/anaconda3/envs/coqgym

vscode集成终端输出:

(automl) brandBrandoParetoopareto~/ultimate-utils $ conda info --envs
# conda environments:
#
                         /Users/brandBrandoParetoopareto/anaconda3
base                  *  /Users/brandBrandoParetoopareto/anaconda3/envs/automl
                         /Users/brandBrandoParetoopareto/anaconda3/envs/coqgym

这真的很奇怪,因为它似乎使用了我不知道的正确环境,因为在调试器窗口中它没有显示(automl),而是显示(base),但指向正确的环境(实际上是前面的如果您仔细阅读命令输出,它会说它使用的是(automl),但实际上它使用的是base,但它似乎指向正确的环境!?!?但名称错误)。

这似乎是一种奇怪的行为,有谁知道如何解决这个问题,或者它是否会导致其他意外问题?

也许这应该发布在 vscode 问题中,但我不知道是哪一个,因为也有 vscodevscode-python 一个。


相关问题:


根据评论请求检查inheritEnv(要进入设置,然后在搜索栏中输入inheritEnv):

该框未选中,我认为这意味着 "terminal.integrated.inheritEnv" 设置为 false


我现在看到的奇怪的事情是:

  1. conda 右下角选择环境的选项,我要使用的环境没有出现。即使我将路径粘贴到它的选项,它也不起作用。
  2. 当我启动一个新终端时,它以某种方式决定自行激活 base,尽管我的 zsh 已经开始使用正确的环境。这是为什么?但即使当我使用zsh 启动新提示时,左下角似乎也没有指向正确的 conda env。

【问题讨论】:

  • 您可以尝试设置"terminal.integrated.inheritEnv": false 看看是否可以解决问题?
  • @BrettCannon 我认为它一直被设置为 false。我刚刚检查了该框未选中。这就是你所期望的?我将更新问题以反映这一点。
  • 如果您使用的是 Linux,请将其设置为 true。默认关闭。
  • 您最好的选择是从激活的 conda 环境中启动 VS Code。
  • @darcamo 我在 mac os X 上

标签: python visual-studio-code anaconda conda


【解决方案1】:

我的建议是简单地将 VS Code 设置为使用您通常使用的 shell: How to change the integrated terminal in visual studio code or VSCode

【讨论】:

  • “我的建议是简单地将 VS Code 设置为使用您正常使用的 shell”是什么意思?
  • 您能否解释一下您的建议将如何解决我的问题以及为什么?
  • 如果我想听从你的建议,我认为这是我需要做的,但我没有测试过它,因为我不确定会发生什么:改变这个:`“terminal.integrated.automationShell. osx": "把你的外壳路径放在这里"`
  • 这只是将 VS Code 使用的默认 shell 切换为您指定的 shell。如果你的 shell 配置设置正确,这应该完全符合预期的行为,因为它是相同的代码。
【解决方案2】:

你在VScode中设置了python环境吗?如果不明确,它会根据它的 python 搜索算法选择它可以找到的第一个 python。

状态栏总是显示当前的解释器。

要选择特定环境,请使用 Python:从命令面板中选择解释器命令 (Ctrl+Shift+P)。

此解释器将保存在工作区设置中:

从列表中选择解释器会为 python.pythonPath 添加一个条目,其中包含指向工作区设置中解释器的路径。因为路径是工作区设置的一部分,所以无论何时打开该工作区,都应该已经选择了相同的环境。如果您想为您的应用程序设置默认解释器,您可以改为在用户设置中手动添加 python.pythonPath 条目。为此,请打开命令面板 (Ctrl+Shift+P) 并输入首选项:打开用户设置。然后使用适当的解释器设置 python.pythonPath,它位于用户设置的 Python 扩展部分中。

注意事项:

如果默认 shell 设置为 PowerShell,则无法在 VS Code 集成终端中自动激活 Conda 环境。要更改外壳,请参阅集成终端 - 配置。

将使用项目中的 conda 环境,但前提是 conda 环境包含 python 解释器,通过在创建 conda 环境时设置python=

conda create -n env-01 python=3.4

有关更多详细信息,请查看 VSCode 文档的 python 环境部分。 https://code.visualstudio.com/docs/python/environments

【讨论】:

  • 我的 vs-code 仍然没有显示在右侧环境的底部(尽管终端提示显示了环境的名称)。我尝试将路径复制粘贴到您输入解释器路径的位置,但它不起作用。我不确定要尝试什么。
  • 当我启动一个新终端时,尽管我的 zsh 已经开始使用正确的环境,但 vscode 决定自行激活 base。这是为什么?但即使我使用zsh 启动新提示时,左下角似乎也没有指向正确的 conda env。
  • 好的,当我要使用的环境被激活时,似乎从普通终端重新启动 vscode 使 vscode 识别环境,现在它显示为一个选项。有时 vscode 是如此痛苦和神秘,但不知何故重新启动它不止一次解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2018-03-09
  • 2021-05-12
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2021-02-17
相关资源
最近更新 更多