我有一个在开发模式下安装的软件包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脚本时启动调试会话?
该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] 删除。
我来说两句