如何以entry_point脚本启动调试器

2024-09-30 10:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pip install -e ./mylocalpkg在开发模式下安装了一个包。在

此包定义了entry_points.console_script

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

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

^{pr2}$

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

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

在调用入口点脚本时,如何使用pdb启动调试会话?在


Tags: installpip脚本模式noterrorpointspdb
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:11

调用pdb模块时必须使用Python脚本的名称,而不是模块的名称。所以你需要给它一个脚本来运行。在

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

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

它们找到myscript的位置并将其传递给pdb模块。您也可以直接指定myscript的位置,如果您碰巧知道的话。在

如果您在Windows上,则需要创建一个加载入口点的脚本,然后进行调试。下面是一个简短的脚本可以完成这项工作:

^{pr2}$

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

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')"

相关问题 更多 >

    热门问题