如何使用entry_point脚本启动调试器

夸大:

我有一个在开发模式下安装的软件包pip install -e ./mylocalpkg

该软件包定义了 entry_points.console_script

setup(
    name='mylocalpkg',
    ...
    entry_points={
        'console_scripts': [
            'myscript = mylocalpkg.scriptfile:main'
        ]
    },
    ...
)

可以通过任何一种方式调用此脚本

$ python -m mylocalpkg.scriptfile
$ myscript

但是,我无法调试此脚本:

$ python -m pdb mylocalpkg.scriptfile
Error: mylocalpkg.scriptfile does not exist
$ python -m pdb myscript
Error: myscript does not exist

如何pdb在调用entry_point脚本时启动调试会话

马蒂亚斯·弗里普(Matthias Fripp):

pdb模块必须与一个Python脚本,而不是一个模块的名称叫。因此,您需要以某种方式为其提供运行脚本。

如果您使用的是Linux / Unix / Mac,则很幸运,因为myscript它实际上是Python脚本,因此可以使用以下选项之一:

python -m pdb `which myscript`
# or
python -m pdb $(which myscript)

这些找到位置myscript并将其传递给pdb模块。myscript如果您碰巧知道这一点,也可以直接指定的位置

如果您使用的是Windows,则需要创建一个脚本来加载entry_point,然后对其进行调试。这是可以完成此工作的简短脚本:

# run_myscript.py
import pkg_resources
myscript = pkg_resources.load_entry_point('mylocalpkg', 'console_scripts', 'myscript')
myscript()

然后,您可以通过以下命令进行调试:

python -m pdb run_myscript.py

或者,在任何平台上,您都可以使用以下丑陋的单行代码:

python -c "import pdb, pkg_resources; pdb.run('pkg_resources.load_entry_point(\'mylocalpkg\', \'console_scripts\', \'myscript\')()')"

另外,在这种特殊情况下,如果要调试可以通过加载的模块,python -m mylocalpkg.scriptfile可以使用更简单的单行代码:

python -c "import pdb; pdb.run('import mylocalpkg.scriptfile')"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

调试器如何工作?

使用XCode调试器启动时,iOS应用程序崩溃,无需调试器即可正常运行

如何捕获调试器并继续使用iOS硬件?

如何使用VSCode调试器调试Gunicorn工作进程?

如何使用Delphi调试器调试isapi扩展?

如何仅在满足条件时启动调试器

如何使用调试器逐步调试bazel skylark脚本

调试器在启动被调试器时如何绕过映像文件执行选项?

使用NonStop调试器选项时,如何将Perl脚本的调试跟踪重定向到文件?

反调试器技术:如何使用VB.NET从调试器中隐藏线程?

如何在pytorch中使用Tensorboard调试器?

如何将使用参数的entry_point / console脚本添加到setup.py

如何事后调试.NET进程并运行Powershell脚本作为调试器动作?

使用Python调试器时如何指定模块(-m)?

如何使用breakpoint()启动PyCharm的调试器

Swift:如何使用调试器检测错误类型?

如何使用Pry调试器检查RSpec变量

启动Python调试器,同时将模块作为脚本执行

停止调试器后如何启动清理方法?

启动程序引发调试器异常

使用Firebug调试器解决脚本冲突

如何使用firefox调试器搜索HTML DOM?

Qt Creator无法启动调试器

如何在“ exec”执行的perl脚本上使用调试器

Android:如何使用调试器查看数组内容

VSCode - 如何使用启动配置调试启动自己调试器的 Node 程序?

如何检查我的 python 脚本是否以某种方式运行(使用某种调试器)

如何使用 OpenEdge 调试器 (OpenEdge Debugger 11.6)

无法使用 Gauge 框架启动 VSCode 调试器