Cursor中Git Worktree环境下使用Poetry调试Flask失败
我之前在Cursor里调试代码完全顺风顺水,但自从给仓库创建了Git Worktree之后,调试Flask服务器直接卡壳——启动调试终端后它秒关,根本没法正常排查问题!相信你也跟我一样试了各种操作:切换两个worktree各自的venv当解释器、统一用主worktree的环境、甚至反复调整launch.json,但就是没解决。
给你分享几个我亲测有效的排查和解决步骤:
强制指定当前Worktree的Python解释器路径
Cursor自动选择的解释器有时候会在worktree环境下“串线”,与其靠它自动识别,不如直接在launch.json里硬编码当前worktree的虚拟环境路径。比如Linux/macOS加这行:"python": "${workspaceFolder}/.venv/bin/python"Windows的话就改成:
"python": "${workspaceFolder}/.venv/Scripts/python.exe"这样能100%确保调试用的是当前worktree的独立环境,不会和主仓库的环境搞混。
锁定调试的工作目录
有时候worktree的工作区路径识别有问题,导致Flask找不到入口文件。你可以在launch.json里加一行强制指定工作目录:"cwd": "${workspaceFolder}"这会让调试进程的工作目录固定在当前worktree的根目录,避免路径混乱引发的启动失败。
先手动验证环境可用性
别光在调试里碰运气,先打开当前worktree的终端,手动跑一遍启动命令:poetry run flask --app=main run --debug如果手动启动都失败,那就是环境的问题——比如worktree的venv里没装全依赖?赶紧补装
poetry install。如果手动能正常启动,那问题肯定出在调试配置上。查看隐藏的调试日志
终端秒关看不到错误?去Cursor的「运行和调试」面板里找「调试控制台」,或者切换到「输出」面板选择Python日志,这里会保留调试进程的所有输出,哪怕终端关了也能看到报错信息。比如我之前就是在这里发现是worktree的路径权限问题。临时关闭justMyCode
你当前的launch.json里justMyCode设的是true,这会跳过非你写的代码(比如Flask框架的启动逻辑),有时候启动失败的原因就藏在框架代码里。暂时把它改成false,再跑一次调试,大概率能看到具体的报错提示,找到问题后再改回来就行。
给你一个调整后的launch.json示例,把上面的优化点都加进去了:
{ "name": "CMS: Backend Server", "presentation": { "group": "CMS", "order": 1 }, "type": "python", "request": "launch", "module": "flask", "python": "${workspaceFolder}/.venv/bin/python", "cwd": "${workspaceFolder}", "args": [ "--app=main", "run", "--debug" ], "jinja": true, "justMyCode": false }
按照这个思路一步步排查,应该能解决调试终端秒关的问题。
内容来源于stack exchange




