gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:23:41 26 4
gpt4 key购买 nike

我使用 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

如何在调用 entry_point 脚本时使用 pdb 启动调试 session ?

最佳答案

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

关于python - 如何使用 entry_point 脚本启动调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45930920/

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