如何在使用VSCode的虚拟环境中调试Python代码?

37

编辑

我在使用VSCode调试虚拟环境时遇到了问题,因为该环境中有一些不在base环境中安装的不同软件包。激活环境后,可以使用常规的python命令python main.py在该环境中使用软件包。但是在调试时,我无法使用仅安装在my_env中的软件包。如何使用VSCode在虚拟环境中调试Python代码?

这是问题的摘要。其余内容提供了关于我的情况的一些具体信息。

编辑前

我正在使用visual studio code编写一个简单的代码,需要使用xmltodict包。

import xmltodict

with open('C:\\Users\\user\\foo.xml') as f:
    db_dict = xmltodict.parse(f.read())

print(db_dict)

我有一个名为my_env的虚拟环境,我在其中安装了xmltodict包。当我使用activate my_env激活该环境时,这个代码可以正常工作。但是,当我尝试使用vscode的调试选项时,它会报错:No module named 'xmltodict'。因为vscode的调试按钮会打开一个新的cmd并在其中运行调试命令,所以我停止了调试,然后在cmd中输入了activate my_env,然后再次尝试进行调试,但仍无法找到该模块。另外,我尝试在vscode中的jupiter笔记本上使用也无法找到该包。

我发现在vscode中import xmltodict下划线是红色的,并显示Unable to import 'xmltodict',但从cmd中正常运行时可以工作。有时候其他模块也会出现这种情况,我不知道为什么。我使用pip安装了xmltodict模块,也许这是原因。

我正在Windows 10上使用Anaconda Python 3.7.1和Visual Studio Code 1.30.1。

我如何在VSCode中使用虚拟环境调试Python代码?我看到这个问题,但我不认为那正是我想要的?


1
这个有帮助吗:https://code.visualstudio.com/docs/python/environments? - Robin Zigmond
是的,这很有帮助。我尝试了该文档中的一些方法,但我没有找到确切的答案。仍然无法调试我的代码。 - Alperen
5个回答

36

10
谢谢。如果我们在 settings.json 文件中添加 python.pythonPath,它会起作用。但是我想提供另一种方法来实现相同的效果。通过从**命令面板(Ctrl+Shift+P)**调用 Python: Select Interpreter 命令并选择属于新虚拟环境的 Python 解释器来实现。我一开始就尝试过这种方法,但是在选择列表中看不到新环境的 Python 解释器。对我来说,重新启动 VSCode 解决了这个问题。重启后,我可以在选择列表中看到新环境的 Python 解释器。 - Alperen
@Alperen,我直接使用了你的方法,非常好用!谢谢~ - Burakhan Aksoy
那解释了很多问题。(检测到讽刺) - Ilya Pukhov
在我的 vscode v1.66.1 中,我不得不在 ./.vscode/launch.json 中添加额外的标志 "justMyCode": false,这样它才能正常工作。在添加了这个标志之后,它开始工作了,我也能够调试库了 :) - simkusr
明确设置Python解释器:https://code.visualstudio.com/docs/python/environments#_manually-specify-an-interpreter - braulio
显示剩余2条评论

7

从命令面板(Ctrl+Shift+P)中使用“Python:选择解释器”命令,并选择属于新虚拟环境的python解释器。

如果您在使用虚拟环境且在Linux上,请从下拉菜单中选择env>bin>python,即env/bin/python


2
我正在使用venv创建虚拟环境,并使用VS Code调试代码。
我发现我们不需要创建launch.json文件,而是在{project}/.vscode/文件夹下添加settings.json。 我的settings.json如下:
{
"python.testing.unittestArgs": [
    "-v",
    "-s",
    ".",
    "-p",
    "test_*.py"
],
"python.testing.pytestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.unittestEnabled": true,
"python.pythonPath": "/Users/hhh/project/bin/python"
}

我可以调试项目并运行单元测试。 希望这能帮到你。


0
菜单栏 -> 视图 -> 命令面板 -> Python: 选择解释器
参考: 截图

你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到有关如何撰写好的回答的更多信息。 - undefined
您的回答可以通过添加更多支持性信息来改进。请[编辑]以添加进一步细节,如引用或文档,以便他人可以确认您的回答是否正确。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
虽然这个链接可能回答了问题,但最好在这里包含答案的关键部分,并提供链接作为参考。仅有链接的答案如果链接页面发生变化可能会失效。- 来自审核 - undefined
尽管这个链接可能回答了问题,但最好在这里包含答案的必要部分,并提供链接以供参考。仅有链接的答案如果链接页面更改可能会变得无效。- 审核来自 - Chenmunka

0

venv Python 调试的两个步骤

  1. 在项目本地的 settings.json 文件中:

"python.pythonPath":"venv/bin/python"

  1. 在调试侧边栏的左侧:单击蓝色“运行和配置”按钮下方的“创建launch.json” 将创建一个带有Python的项目本地launch.json:

    { "name": "Python", "type": "python", "request": "launch", "program": "${file}", }

  2. 按F5并射击


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接