ChatGPT解决这个技术问题 Extra ChatGPT

在 Visual Studio Code 中使用 Anaconda

我在这里有点困惑,在撰写本文时,最新的 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、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在行:1 字符:1

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

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

msg = "Hello World"
print(msg)

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

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

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

只是想知道是否值得更新接受的答案:)

A
Aren Cambre

我在这个问题上打了太久......从 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)搜索终端:选择默认配置文件选择命令提示符

更硬/Powershell

将 conda 的位置添加到您的 PATH 中(如果您没有通过安装程序添加它)。对我来说,在“所有用户”安装时,这是管理员 Powershell 提示中的 C:\ProgramData\Anaconda\Scripts 将 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 上完美运行。谢谢!
m
m_kos

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

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


Z
Zhongyi

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

(类型)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。
B
Brett Cannon

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

另请注意,自 2019 年 1 月发布的 conda 4.6 起,conda 仅支持 PowerShell。

VS Code 的 Python 扩展与 conda 一起工作得很好。创建一个 conda 环境,扩展程序将允许您选择它作为您的环境/解释器。


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

遵循@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,并且不接受额外的论据。
A
Andre Barbosa

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

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

PS:这个答案是基于 kenlukas 的答案,但是针对 powershell 而不是 cmd。


我必须添加 -ExecutionPolicy ByPass 以避免有关执行策略的错误。请参阅stackoverflow.com/a/61402982/2165903
k
kenlukas

对我来说,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。


A
Aung Htet

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

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


b
blaylockbk

"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"
    }
}

尽管与 naylinn 相同,但由于其可读性,我更喜欢此解决方案。但是,使用 Anaconda 时,args 并没有完全适合我,而且我没有意识到 %USERNAME% 通配符不起作用 stackoverflow.com/questions/63591046/… 对于上面的最后一个 args 元素,我会改为:“-命令", "'& 'C:\\Users\\${env:USERNAME}\\Anaconda3\\shell\\condabin\\conda-hook.ps1' ; conda activate 'C:\\Users\\$ {env:USERNAME}\\Anaconda3''"
@Adji_PA 你的评论帮助了我!
M
M. Balcilar

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


J
Jordan M

命令提示符(默认)于 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
菜鸟问题 - 为什么?
谢谢!这真的帮助了我很多。
N
Naylinn

打开文件 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... 未被识别为脚本文件的名称”。
@Neits 它应该是从 powershell 执行 anaconda 提示符的命令行。 Naylinn 建议从 Anaconda 提示应用程序的属性中获取它(找到图标,然后右键单击属性和目标)
N
Nilabh

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

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


m
ml_chai

正如许多人指出的那样,您可以简单地从 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", 
...

J
Jannchie

我认为这是一种更好的方法,让 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 也有帮助,但我没有尝试过。


M
Majid Hajibaba

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

https://i.stack.imgur.com/5zd6e.png

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

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

https://i.stack.imgur.com/JsL4W.png


o
ouflak

单击 control+shift+p 搜索终端:选择默认配置文件 打开新终端(python 最近的虚拟环境) 再次单击 control+shift+p 搜索 Python:选择解释器(选择您的环境或基本 conda 环境) 打开新终端(conda 虚拟环境)


O
Oscar Rangel

这对我有用:

C:\Users\xxx\Anaconda3\Scripts C:\Users\xxx\Anaconda3 C:\Users\xxx\Anaconda3\Library\bin

只需将这三个路径添加到您的路径