You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code中调试Python项目的非主入口cli方法?

解决方案

错误原因

你之前的配置错误地将module设为mymodule.cli,但cli是mymodule模块中的函数而非子模块,导致Python无法找到对应的模块规范。


方案1:直接调用函数(无需修改代码)

修改launch.json,通过Python的-c参数执行代码导入并调用cli函数,同时调整命令行参数的解析逻辑:

{
    "name": "myentrypoint",
    "type": "debugpy",
    "request": "launch",
    "program": "${env:VIRTUAL_ENV}/bin/python",
    "args": [
        "-c",
        "from mymodule import cli; import sys; sys.argv = ['myentrypoint'] + sys.argv[1:]; cli()",
        "--arg1", "value1",
        "--arg2", "value2"
    ],
    "console": "integratedTerminal",
    "justMyCode": true,
    "cwd": "${workspaceFolder}"
}
  • ${env:VIRTUAL_ENV}/bin/python指向Poetry创建的虚拟环境中的Python解释器,确保依赖环境正确
  • 调整sys.argv是为了让cli函数的参数解析逻辑能正确识别脚本名称,避免参数解析错误

方案2:利用Poetry脚本直接调试

直接调用poetry run命令启动入口,确保调试环境与日常运行完全一致:

{
    "name": "myentrypoint (Poetry)",
    "type": "debugpy",
    "request": "launch",
    "program": "$(which poetry)",
    "args": [
        "run",
        "myentrypoint",
        "--arg1", "value1",
        "--arg2", "value2"
    ],
    "console": "integratedTerminal",
    "justMyCode": true,
    "cwd": "${workspaceFolder}"
}
  • 若$(which poetry)无法正常解析,可替换为Poetry的实际安装路径(比如/home/yourname/.local/bin/poetry)

方案3:添加极简入口代码(侵入性低)

在mymodule/__init__.py中添加几行代码,为模块增加可直接启动的入口:

if __name__ == "__main__":
    import sys
    from . import cli
    cli()

然后修改launch.json为:

{
    "name": "myentrypoint",
    "type": "debugpy",
    "request": "launch",
    "module": "mymodule",
    "console": "integratedTerminal",
    "args": [
        "--arg1", "value1",
        "--arg2", "value2"
    ],
    "justMyCode": true,
    "env": {
        "PYTHONPATH": "${workspaceFolder}:${env:PYTHONPATH}"
    }
}
  • PYTHONPATH配置确保Python能找到项目根目录下的mymodule模块
  • 此修改仅在直接启动模块时生效,不影响Poetry脚本的原有运行逻辑

内容的提问来源于stack exchange,提问作者Raphael Roth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:43:10