在 Visual Studio Code 中使用 Anaconda

Posted

技术标签:

【中文标题】在 Visual Studio Code 中使用 Anaconda【英文标题】:Working with Anaconda in Visual Studio Code 【发布时间】:2019-07-16 15:27:24 【问题描述】:

我在这里有点困惑,撰写本文时最新的 Anaconda Distribution 2018.12 带有安装 Microsoft Visual Studio Code 的选项,这很棒。

在启动 VSC 并在 Python: Select Interpreter 之后并全新安装 Anaconda 时,我可以看到 ~Anaconda3\python.exe,我认为这是 Anaconda Python 环境,但是,当我尝试运行一些命令时,我得到:

PS ~\Documents\Python Scripts\vs> ~/Anaconda3/Scripts/activate
PS ~\Documents\Python Scripts\vs> conda activate base

conda : 术语“conda”未被识别为 cmdlet 的名称, 函数、脚本文件或可运行的程序。检查拼写 名称,或者如果包含路径,请验证路径是否正确并 再试一次。在 line:1 char:1

现在我知道它可能与环境变量有关,但我发现它非常奇怪,因为在 Anaconda 安装期间,有具体提到不需要将 Anaconda 路径添加到环境变量。然而,错误发生后,集成终端设法启动 Python,我能够运行代码。

接下来是我在运行一个简单的脚本后无法查看调试器中的任何变量,如教程here所示:

msg = "Hello World"
print(msg)

我确实希望看到与链接中所示类似的结果,例如 dunder 变量,我还按照步骤将我的launch.json 更新为stopOnEntry = True

我想知道是否可以将 Visual Studio Code 与 Anaconda 一起用作解释器,而无需从原始发行版中注册变量,以及我是否遗漏了任何所需的内容。

我希望体验更直接,但我可能会遗漏一些东西,我在 Windows 10 上运行。

【问题讨论】:

只是想知道是否值得更新已接受的答案:) 【参考方案1】:

我在这个问题上打了太久......从 Anaconda Prompt 启动 VS Code 都感觉很笨拙,而且对于集成的 Powershell 终端(Windows 上默认的 VS Code 集成终端)来说并不真正适用

我希望能够从任何提示(通常是 Windows 菜单快捷方式)启动 VS Code 并仍然与 Conda 交互。

这两种方法都适用于 Windows 10 上的 Anaconda 2020.02,VS Code 1.44.0。

简单快捷

通过以下方式切换 VS Code 以使用 cmd.exe 作为默认的集成终端 shell:

打开命令面板 (Control-Shift-P) 搜索Terminal: Select Default Profile 选择Command Prompt

更硬/Powershell

conda 的位置添加到您的PATH(如果您没有通过安装程序添加它)。对于“所有用户”安装的我来说,这是C:\ProgramData\Anaconda\Scripts 在管理员 Powershell 提示符下将 Powershell 执行策略更改为远程签名,即Set-ExecutionPolicy RemoteSigned 打开 Anaconda Prompt 并运行 conda init powershell,这会将与 Conda 相关的启动添加到用户配置文件中某处的 Powershell profile.ps1。

当您运行 VS Code 并调试 .py 或启动 Powershell 集成终端时,您现在应该会看到一条关于“正在加载个人和系统配置文件”的消息,并且在终端提示符上添加了 Conda 环境前缀。

【讨论】:

我找不到Command Prompt 选项。我正在使用``` 版本:1.51.0 提交:fcac248b077b55bae4ba5bab613fd6e9156c2f0c 日期:2020-11-05T18:14:40.758Z(3 周前)电子:9.3.3 Chrome:83.0.4103.122 Node.js:12.14.1 V8: 8.3.110.13-electron.0 操作系统:达尔文 x64 19.6.0 ``` @JingpengWu 如果我没看错你的版本,看起来你正试图在 Mac 上执行此操作? Command Prompt 仅适用于 Windows afaik 感谢您的检查。是的,我在 Mac 上使用它。 自 05.21 起,“选择默认外壳”已更改为“选择默认配置文件” 截至 2021 年 10 月 10 日,我在 Windows 11 上完美运行。谢谢!【参考方案2】:

对我来说,这个解决方案适用于 VSC (1.40) ->

1.将解释器设置为 Python 3.7.1 ('base':conda) 2. 我没有使用 PowerShell,而是将(选择默认 Shell)切换到命令提示符并启动了一个新终端 -> 现在它位于 conda(基本)环境中。 [对于 Anaconda 发行版,2018.12]

【讨论】:

【参考方案3】:

在 VScode 中将 anaconda 提示设置为默认终端:

    (类型)CTRL + SHIFT + P (搜索:)打开设置 (点击:)首选项:打开设置(JSON)

然后添加三行配置:


    ... # any other settings you have already added (remove this line)

    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
    "terminal.integrated.shellArgs.windows": ["/K", "C:\\Anaconda3\\Scripts\\activate.bat C:\\Anaconda3"],
    "python.condaPath": "C:\\Anaconda3\\Scripts\\conda.exe"

最后,重启你的 VScode

【讨论】:

如果您安装了 Miniconda 和/或作为用户而不是管理员,请记住适当地更新 shellArgs 和 condaPath。要查找 .bat 和 .exe,您可以在 VS 代码之外的 Anaconda 提示符中运行“where conda”。另一个shellArg是Anaconda或Miniconda的安装路径 这是唯一适合我的解决方案。谢谢!@Zhongyi。【参考方案4】:

激活 conda 环境不会将 conda 放在您的 PATH 上。如果您在安装过程中未选中包含conda 的框,则需要从“开始”菜单启动Anaconda Prompt 应用程序以在PATH 上获得带有conda 的命令行。

还意识到 conda 仅支持 PowerShell,截至 2019 年 1 月发布的 conda 4.6。

VS Code 的 Python 扩展适用于 conda。创建一个conda 环境,扩展程序将允许您选择它作为您的环境/解释器。

【讨论】:

我想了很多,认为可能有一些神奇的功能在起作用,暂时添加到PATH。因此,如果我理解正确,可行的方法是通过 Anaconda Prompt/Navigator > Select interpreter > Select Environment and code away 启动 VS Code?​​span> 如果您想在终端中使用conda,那么是的,这应该可以。如果您不关心在集成终端中有conda,那么只需正常启动 VS Code,您就可以随时打开 VS Code 旁边的 Anaconda Prompt。 我认为,如果您必须从 conda 环境中启动 vscode 本身以正确定义所有 PATH 变量,则不需要从 vscode 中实际选择解释器。适当的 python 可执行文件的位置已经在 conda 环境中定义。这绝对是 vscode 设计的一个缺陷。应该有一种方法可以通过让用户启动 anaconda 终端并从那里打开 vscode 让一切正常工作来提供完整的 conda 支持,而不会让用户陷入困境...... @user32882 没有人在这方面与您争论,我们正在积极努力改进它(新代码已经用于 A/B 实验,如果您使用我们的内部人员构建,您可以做对现在)。但还要注意,由于 SO 的字符数限制难以进入的各种原因,使 conda 工作并不简单。但要知道我们正在尽我们所能。【参考方案5】:

按照@andre-barbosa 和@kenlukas 的做法,以下配置对我来说效果很好(Windows 10 上的 PowerShell):

"terminal.integrated.shellArgs.windows": [
    "-ExecutionPolicy",
    "ByPass",
    "-NoExit",
    "-Command",
    "your-path-to-\\conda-hook.ps1",
    ";conda activate 'your-path-to-the-base-conda-environment'"
]

将“your-path-to-\conda-hook.ps1”和“your-path-to-the-base-conda-environment”替换为您的实际路径,并将其添加到 VSCode 的settings.json。查看“Anaconda Powershell Prompt”快捷方式的属性,您会找到所需的。

关键是要真正遵守 VSCode 的 JSON 配置文件的规则,将整个参数字符串转换为逗号分隔的列表。

【讨论】:

你能告诉我如何配置 python 调试器(扩展 ms-python.python),这样它也能正常工作吗?目前似乎在我的 Python 终端中找到了conda,但在我的 Python 调试控制台 终端中却没有。 @MichaelKopp 不确定这是否可能。我玩了一下调试配置文件launch.json,似乎console 字段被限制为三个值之一:internalConsoleintegratedTerminalexternalTerminal,并且不接受额外的论据。【参考方案6】:

将此设置添加到 settings.json 为我解决了:

"terminal.integrated.shellArgs.windows": [
       "PowerShell -NoExit -File C:\\ProgramFiles\\Anaconda\\shell\\condabin\\conda-hook.ps1"
    ]

PS:此答案基于 kenlukas 的答案,但适用于 powershell 而不是 cmd。

【讨论】:

我必须添加-ExecutionPolicy ByPass 以避免有关执行策略的错误。见***.com/a/61402982/2165903【参考方案7】:

对我来说,this article 解决了我的问题(在 Windows 10 上):具体来说,settings.json 条目:terminal.integrated.shellArgs.windows 例如:

    "terminal.integrated.shellArgs.windows": [
        "/K", 
        "C:\\Programs\\Anaconda3\\Scripts\\activate.bat & conda activate py37"
    ]

它适用于命令行,但似乎不适用于 PowerShell。

【讨论】:

【参考方案8】:

如果您从 Anaconda Navigator 应用程序内部启动 VS Code 应用程序,您将自动获得“conda-aware” VSCode 集成终端。

这样您就不需要更改 VS Code 本身的设置。

【讨论】:

【参考方案9】:

命令提示符(默认)于 2021 年 9 月停止为我工作

最初我使用了许多人建议的快速修复:

终端下拉菜单 --> 选择默认配置文件 --> 命令提示符

不如 PowerShell,但和你们中的许多人一样,我不在乎,只想继续我的项目。

最近,VS Code 更新了,尽管有上述设置,PowerShell 仍将默认在终端中运行。回到第一格。

单行修复

我找到了another post,并在我的 Anaconda PowerShell Prompt (Miniconda3) 中尝试了以下操作:

conda init

这改变了几个路径,包括 PowerShell 使用的一些路径。现在,在 VS Code 中运行的 Python 脚本在 PowerShell 中运行,因为 PowerShell 现在可以识别 Conda。

注意

如果你已经创建了一个虚拟环境,你仍然需要在 VS Code 中指出这一点:

查看 --> 命令面板... --> Python:选择解释器 -->

~\Path\to\my\virtual\environment\python.exe

【讨论】:

很好的答案,不要忘记将 powershell 执行策略设置为“远程签名”。 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 菜鸟问题 - 为什么? 谢谢!这对我帮助很大。【参考方案10】:

最简单的方法是打开 anaconda shell 提示符,然后从该终端启动 VScode。现在 VScode 可以看到 anaconda 的一切!

【讨论】:

【参考方案11】:

我正在开发 VS 版本:1.47.0(用户设置)。 我最近从 Jupyter Notebook(仍在为我的报告工作)切换到 VS Code。但是我的代码没有运行。 'conda' 的相同问题未被识别。对我有用的是:

    杀死终端并重新开始 在终端下拉选项中,选择“选择默认外壳” 将其从 powershell 更改为 CMD。 现在我所有预装的库和 conda 都可以正常工作了。

【讨论】:

【参考方案12】:

打开文件C:\Users\YOUR-USER-NAME\AppData\Roaming\Code\User\settings.json

插入部分"Miniconda3":

"terminal.integrated.profiles.windows": 

    "PowerShell": 
        "source": "PowerShell",
        "icon": "terminal-powershell"
    ,

    "Miniconda3": 
        "source": "PowerShell",
        "args": "-ExecutionPolicy ByPass -NoExit -Command \"& 'C:\\ProgramData\\Miniconda3\\shell\\condabin\\conda-hook.ps1' ; conda activate 'C:\\ProgramData\\Miniconda3' \"",
        "icon": "C:\\ProgramData\\Miniconda3\\Lib\\site-packages\\conda\\shell\\conda_icon.ico"
    ,

    "Command Prompt": 
        "path": [
            "$env:windir\\Sysnative\\cmd.exe",
            "$env:windir\\System32\\cmd.exe"
        ],
        "args": [],
        "icon": "terminal-cmd"
    ,

    "Git Bash": 
        "source": "Git Bash"
    


不用碰env:PATH

顺便说一句,Miniconda3.args 是从Anaconda Powershell Prompt (Miniconda3) -> Properties.Shortcut.Target 复制而来的

如果您使用 Anaconda 而不是 Miniconda,您可能需要修改一些路径。

VS Code 只是一个编辑器,Python Extension 不断破坏东西,并将其配置文件传播到各处。很久以前就停止使用了。

【讨论】:

我正在 VS Code 1.60 中尝试这个,现在它要求“args”是一个数组。但是,当我将字符串括在 [] 中时,我收到一条错误消息,提示“参数 '-ExecutionPolicy ByPass -NoExit... 未被识别为脚本文件的名称”。【参考方案13】:

正如许多人所指出的,您可以简单地从 Anaconda 命令提示符 (ACP) 启动“代码”。

ACP 只是带有一些参数的命令提示符(等效于 powershell)的快捷方式。 (例如%windir%\System32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

正如@janh 指出的那样,每次都从那里启动 vscode 很烦人,相反,您可以更改 VS Code setting.json 文件中的默认值,正如@zonhgyi 指出的那样,但他推荐的是/将是已弃用。

参考号:https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration

这是我最终使用的。无需更改PATH,除了编辑settings.json文件(可通过Ctrl+Shift+P -> settings.json访问)无需进行其他更改

...

"terminal.integrated.profiles.windows": 
  "Conda": 
    "path": "C:\\windows\\System32\\cmd.exe",
    "args": [
      "/K", "C:\\ProgramData\\Anaconda3\\Scripts\\activate.bat C:\\ProgramData\\Anaconda3"
    ],
    "icon": "squirrel"
  
,
"terminal.integrated.defaultProfile.windows": "Conda", 
...

【讨论】:

【参考方案14】:

"terminal.integrated.shellArgs.windows" 方法已弃用:

这已被弃用,配置默认 shell 的新推荐方法是在 #terminal.integrated.profiles.windows# 中创建终端配置文件并将其配置文件名称设置为 #terminal.integrated.defaultProfile.windows# 中的默认名称。

阅读VS code docs (configuring profiles) 后,我为 Anaconda Prompt 创建了一个新配置文件。以下是我的settings.json 文件中的内容:

"terminal.integrated.profiles.windows":
    "PowerShell": 
        "source": "PowerShell",
        "icon": "terminal-powershell"
    ,
    "Command Prompt": 
        "path": [
            "$env:windir\\Sysnative\\cmd.exe",
            "$env:windir\\System32\\cmd.exe"
        ],
        "args": [],
        "icon": "terminal-cmd"
    ,
    "Git Bash": 
        "source": "Git Bash"
    ,
    "Anaconda Prompt": 
        "source": "PowerShell",
        "args": [
            "powershell",
            "-NoExit",
            "-ExecutionPolicy ByPass",
            "-NoProfile",
            "-File C:\\path\\to\\Miniconda3\\shell\\condabin\\conda-hook.ps1"
        ],
        "icon": "smiley"
    

【讨论】:

【参考方案15】:

首先,你必须在环境变量中添加4~5个路径

可能有人没有.../usr/bin。这不重要。

其次,您必须在 vs 代码中将默认配置文件更改为命令提示符。 使用默认外壳或电源外壳会有一些问题。 就我而言,我无法激活我创建的 conda 环境。 它一直停留在 anaconda 的(基本)环境中。 按 ctrl+shift+p 选择 terminal:select default profile 并单击。 然后选择命令提示符。 切换到命令提示符时,我可以将activate (myenvname) 用于其他环境。

【讨论】:

【参考方案16】:

    点击control+shift+p

    搜索终端:选择默认配置文件

    打开新终端(python最近的虚拟环境)

    再次点击control+shift+p

    搜索 Python:选择解释器(选择您的环境或基本 conda 环境)

    打开新终端(conda 虚拟环境)

【讨论】:

【参考方案17】:

我认为这是一种更好的方法,让 conda 在 vscode 中与 powershell 一起工作,而无需更改您的 PATH,这是不推荐的:

    win + X,以管理员身份打开终端。 运行C:\Users\xxx\anaconda3\Scripts\conda.exe init powershell,您可以在Anaconda Prompt (anaconda3) 中使用where conda 来查找路径。

它对我有用。可以直接在 Anaconda Prompt (anaconda3) 中运行conda.exe init powershell 也有帮助,但我没有尝试过。

【讨论】:

以上是关于在 Visual Studio Code 中使用 Anaconda的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio Code 中销毁 TypeScript

visual studio code 怎么用

visual studio code怎么运行代码

Visual Studio 开发:安装配置Visual Studio Code

在Visual Studio Code中配置GO开发环境

在 Visual Studio Code 中使用 Makefile 调试现有项目