gpt4 book ai didi

python - 如何使用 VSCode 调试器调试 Python console_script 命令行应用程序?

转载 作者:行者123 更新时间:2023-12-04 03:49:58 24 4
gpt4 key购买 nike

我有一个 Python 包 package_name它提供了一个命令行应用程序command-line-app-nameconsole_script :setup.py :

setup(
...
entry_points={"console_scripts": ["command-line-app-name=package_name.cli:main"]},
...
)
virtualenv 位于 <project>/.venv并通过 pipenv 管理. pipenv托管 venvs 应该支持 VSCode 调试集成。我创建了一个调试器配置 launch.json将 Python 路径设置为 venv ( pythonPath ) 的文件:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: command-line-app-name",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"program": "command-line-app-name",
"linux": {
"pythonPath": "${workspaceFolder}/.venv/bin/python",
"args": ["-r", "/home/florian/gitlab/package_name/data/Test_MRM.d"]
},
"windows": {
"pythonPath": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["-r", "D:\\MassHunter\\Data\\demo_0000.d"],
},
"console": "integratedTerminal"
}
]
}
Windows 和 Linux 特定的 venv python 可执行文件和命令行参数不应产生影响。如果我运行调试器,我会得到: FileNotFoundError: [Errno 2] No such file or directory: '/home/florian/gitlab/package-name/command-line-app-name' .似乎我以某种方式误解了文档。我试图寻求帮助 w.r.t. vscode-python以及 debugpy没有成功。如何调试控制台脚本命令行应用程序(而不是包模块)?

最佳答案

console_scripts无法开箱即用地调试。解决方案是直接调用入口点函数( "program": "${workspaceRoot}/package_name/cli.py", )。这需要添加 if __name__ == '__main__':相应模块中的成语(此处:cli.py)。在我的例子中,使用的命令行参数解析器是 click .然而,其他命令行解析器库的伪代码应该非常相似。package_name/cli.py :

@click.command()
@click.option(...)
def main(<args>, <kwargs>):
...


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

.vscode/launch.json :
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: command-line-app-name",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"program": "${workspaceRoot}/package_name/cli.py",
"linux": {
"pythonPath": "${workspaceFolder}/.venv/bin/python",
"args": ["-r", "/home/florian/gitlab/package_name/data/Test_MRM.d"]
},
"windows": {
"pythonPath": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["-r", "D:\\MassHunter\\Data\\demo_0000.d"],
},
"console": "integratedTerminal"
}
]
}
注意 : 用于管理 venv 的工具有所作为。如果使用 pipenv 管理 venv,此解决方案确实有效。 .如果使用 poetry 管理 venv,则该解决方案不起作用.

关于python - 如何使用 VSCode 调试器调试 Python console_script 命令行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64556874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com