【问题标题】:How to specify a module (-m) when using the Python debugger?使用 Python 调试器时如何指定模块(-m)?
【发布时间】:2020-07-09 22:08:54
【问题描述】:

我想调试一个 Python 模块,我必须像这样执行:

python -m ModuleA.ModuleB <someargs>

如何在 VS Ccode 的 launch.json 上配置 -m 开关? args 部分是针对正在执行的脚本,而不是针对 python 二进制文件本身。

【问题讨论】:

    标签: python visual-studio-code vscode-debugger


    【解决方案1】:

    Python 启动配置接受"module" 而不是"program"。它用于debugging specific Python applications,例如 Flask、Django 和 Scrapy。这是sample for a Flask app,看起来与您想要的相似:

    {
        "name": "Python: Flask",
        "type": "python",
        "request": "launch",
        "module": "flask",            # <---------------------
        "env": {
            "FLASK_APP": "app.py"
        },
        "args": [
            "run",
            "--no-debugger",
            "--no-reload"
        ],
        ...
    }
    

    如您所见,此配置指定了"env": {"FLASK_APP": "app.py"}"args": ["run", "--no-debugger","--no-reload"]。使用"module": "flask" 属性代替program

    因此,鉴于此示例工作区的文件夹 Q 包含 ModuleA.ModuleB

    $ tree .
    .
    ├── Q
    │   └── ModuleA
    │       ├── __init__.py
    │       └── ModuleB.py
    └── .vscode
        └── launch.json
    

    ModuleB 在哪里:

    import sys
    
    if __name__ == "__main__":
        print(*sys.argv)
    

    您可以将此 launch.json 配置指定为:

    {
        "name": "run-specific-module",
        "type": "python",
        "request": "launch",
        "console": "integratedTerminal",
        "cwd": "${workspaceFolder}/Q",
        "module": "ModuleA.ModuleB",
        "args": [
            "123",
            "abc",
        ]
    },
    

    在终端中提供此输出的运行:

    $  cd /path/to/Q ; env /path/to/python /path/to/.vscode/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/launcher 37343 -- -m ModuleA.ModuleB 123 abc 
    ('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')
    

    应该与以下内容相同:

    $ python -m ModuleA.ModuleB 123 abc
    ('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')
    

    【讨论】:

    • 甜,这正是我所需要的。谢谢!
    猜你喜欢
    • 2014-01-11
    • 2018-02-26
    • 2022-01-13
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    相关资源
    最近更新 更多