python - Visual Studio Code Django 调试断点未在视图和模板上触发
问题描述
我正面临 VsCode 的调试问题,它无法触发任何类型的断点(标准或日志),但特别是在 View 调用和模板上。Django 项目结构其他部分的断点可以正常工作。例如在此代码示例中:
class HomeView(TemplateView):
template_name = "home/home.html"
def get(self, request, *args, **kwargs):
return render(request, self.template_name, {})
template_name = "home/home.html"
构造类时将成功触发断点。然而,断点return render(request, self.template_name, {})
永远不会触发(我希望它在用户导航到此类呈现的 URL 时触发)。
我已经尝试过的几件事:
- 禁用除 Python、Jupiter 和 Pylance 之外的所有其他 VsCode 扩展
- 恢复到 4 个月大(我将在下面解释为什么 4 个月)版本的 VsCode、Python 扩展、PyLance 和 Django
- 创建上述基于函数的视图(也不会触发断点)
- 创建一个全新的 Django 项目(能够在一个全新的项目和其他两个现有项目中重现此项目)
4 个月大的时间线是因为我最后一次使用 Django 和调试 Views 是大约 4 个月前,所以我想我会尝试这些版本。我相当肯定这在我上次尝试时有效,但我可能弄错了。
作为参考,我使用的是标准的 Django 启动配置。我尝试更改一些选项,例如--noreload
,stopOnEntry
但这并没有影响结果。复制下面的配置文件以供参考:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}\\manage.py",
"args": [
"runserver"
],
"django": true
}
]
}
此外,在模板中设置断点也不会触发,并且在 get 方法调用的函数中设置断点也不会触发(基本上是 View 调用后的任何内容)。
我从文档中看到的所有内容都表明这应该有效,而且我认为它曾经如此。这次我错过了什么或发生了什么变化?
解决方案
终于想通了。几周前,我pip install gevent
为一个项目安装了 gevent ( )。这样做会添加GEVENT_SUPPORT=True
到我的环境变量中。启用后,这会阻止 VsCode 调试 Python 标准库的线程模块。更改此变量False
以为我修复它(当然,此时我没有使用 gevent)。
可以在此处找到有关此问题的更多信息:https ://github.com/microsoft/debugpy/issues/189
推荐阅读
- amazon-web-services - 在默认配置的 EMR 集群模式下会发生什么?
- android - 如何在同步 Gradle 项目时修复“错误:无法解析 com.android.support:support-v4:[22,23)”
- c++ - 是否可以使用包含 {sub,super} 类函数指针的回调表?
- javascript - 将数据从 JavaScript 发送到 C++,超过 127 的字节值被替换为“替换字符”
- python - 如何修复 numpy、loadtxt 中的“未找到”错误?
- perl - POSIX (isprint) 已被删除;该怎么办?
- php - 在php中搜索后的分页
- java - Twitter4J Android 搜索查询返回 Null
- webserver - 如何将数据发送到 Racket 服务器?
- c++ - 如何在 C++ 中保留一定数量的小数位(而不是有效数字)?