如何使用VSCode调试器调试Python控制台脚本命令行应用程序?

如何使用VSCode调试器调试Python控制台脚本命令行应用程序?,python,visual-studio-code,vscode-debugger,Python,Visual Studio Code,Vscode Debugger,我有一个Python包package\u name,它提供了一个命令行应用程序command-line-app-name作为console\u脚本: setup.py: setup( ... entry_points={"console_scripts": ["command-line-app-name=package_name.cli:main"]}, ... ) @click.command() @click.option(.

我有一个Python包
package\u name
,它提供了一个命令行应用程序
command-line-app-name
作为
console\u脚本

setup.py

setup(
    ...
    entry_points={"console_scripts": ["command-line-app-name=package_name.cli:main"]},
    ...
)
@click.command()
@click.option(...)
def main(<args>, <kwargs>):
    ...


if __name__ == '__main__':
    main()  # pylint: disable=no-value-for-parameter

virtualenv位于
/.venv
中,并使用
pipenv
进行管理
pipenv
managed VENV应支持VSCode调试集成。我已经创建了一个调试器配置
launch.json
文件,将Python路径设置为venv(
pythonPath
):


特定于Windows和Linux的venv python可执行文件和命令行参数不应产生影响。如果运行调试器,我会得到:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/home/florian/gitlab/package name/command line app name'
。似乎我不知怎么地错过了解释文档。我试图找到w.r.t.的帮助,但没有成功。如何调试控制台脚本命令行应用程序(而不是程序包模块)?

console\u脚本无法即时调试。解决方案是直接调用入口点函数(
“程序”:“${workspaceRoot}/package\u name/cli.py”,
)。这需要在相应的模块(此处:
cli.py
)中添加
if uuuuuu name\uuuuuuuu=='\uuuuuuu main\uuuuuuuuu':
习惯用法。在我的例子中,使用的命令行参数解析器是
单击
。但是,对于其他命令行解析器lib,伪代码应该非常类似

package\u name/cli.py

setup(
    ...
    entry_points={"console_scripts": ["command-line-app-name=package_name.cli:main"]},
    ...
)
@click.command()
@click.option(...)
def main(<args>, <kwargs>):
    ...


if __name__ == '__main__':
    main()  # pylint: disable=no-value-for-parameter

注意:用于管理venv的工具起着重要作用。如果使用
pipenv
管理venv,则此解决方案不起作用。如果venv使用
POYMENT
管理,则解决方案不起作用