我有一个python程序,我通常作为包的一部分运行:
python -m mymod.client
为了处理“mymod / client.py”中的相对导入。我如何使用pdb运行它 - python调试器。以下不起作用:
python -m pdb mymod.client
产生错误:
Error: mymod.client does not exist
我的问题不是关于同时运行两个模块python,而是关于如何在python脚本中使用pdb,其中包含相对导入,以及通常通过使用“python -m”运行脚本来处理。 “
重申,我的问题可能是,如何在这样的脚本上使用pdb而不必更改脚本本身只是为了让它与pdb一起运行(即:尽可能保留脚本内的相对导入) 。不应该这样,或者如果我想使用pdb,我是否被迫以某种方式重构?如果是这样的话,我必须引入的脚本结构的最小变化是什么,以允许我利用pdb。
总之,我不关心如何我运行脚本,只要我可以使用pdb而不改变它的内部结构(相对导入等)太多。< / p>
答案 0 :(得分:1)
我认为我有一个解决方案。
像这样运行:
python -m pdb path/mymod/client.py arg1 arg2
将其作为脚本运行,但不会将其视为包。 在client.py的顶部,第一行应该是:
import mymod
这将使包本身加载。 我仍然在玩这个,但它似乎到目前为止工作。
答案 1 :(得分:0)
这是不可能的。虽然在文档中没有说明,但Python不会通过-m
命令行选项解析两个模块。