python脚本上的Python pdb作为包

时间:2016-03-25 20:41:04

标签: python python-module pdb

我有一个python程序,我通常作为包的一部分运行:

python -m mymod.client

为了处理“mymod / client.py”中的相对导入。我如何使用pdb运行它 - python调试器。以下不起作用:

python -m pdb mymod.client

产生错误:

Error: mymod.client does not exist

编辑#1(以解决可能存在的双重问题)

我的问题不是关于同时运行两个模块python,而是关于如何在python脚本中使用pdb,其中包含相对导入,以及通常通过使用“python -m”运行脚本来处理。 “

重申,我的问题可能是,如何在这样的脚本上使用pdb而不必更改脚本本身只是为了让它与pdb一起运行(即:尽可能保留脚本内的相对导入) 。不应该这样,或者如果我想使用pdb,我是否被迫以某种方式重构?如果是这样的话,我必须引入的脚本结构的最小变化是什么,以允许我利用pdb。

总之,我不关心如何我运行脚本,只要我可以使用pdb而不改变它的内部结构(相对导入等)太多。< / p>

2 个答案:

答案 0 :(得分:1)

认为我有一个解决方案。

像这样运行:

python -m pdb path/mymod/client.py arg1 arg2

将其作为脚本运行,但不会将其视为包。 在client.py的顶部,第一行应该是:

import mymod

这将使包本身加载。 我仍然在玩这个,但它似乎到目前为止工作。

答案 1 :(得分:0)

这是不可能的。虽然在文档中没有说明,但Python不会通过-m命令行选项解析两个模块。