pdb: 在不在 sys.path 中的文件上设置断点

pdb: set a breakpoint on file which isn't in sys.path

我正在编写一个 python 包,我想使用 pdb 来调试它。当我尝试在其中一个文件中设置断点时,出现错误:

The specified object 'CaptureManager.frame' is not a function or was not found along sys.path

我用谷歌搜索了一下,找到了解决办法:

将包含我的文件的目录附加到 sys.path

sys.path.append(os.path.join(os.getcwd(),"project_cameo"))

但是几次之后,我变得非常恼火,因为每次重新启动调试会话时我都必须这样做。有 'smart' 的方法吗?

您必须加载您的模块才能使用它(根据您的情况调试它)。 Python 查看 sys.path 变量以加载它的模块。

来自文档,

sys.path: A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.

PYTHONPATH环境变量初始化;所以你可以将你的路径添加到这个环境变量而不是你的模块。

或者您可以在模块顶部添加 sys.path.append(os.path.join(os.getcwd(),"project_cameo")) 行。

根据 this answer,您还可以通过写入文件名的完整路径(或相对于 sys.path 目录的路径)来设置断点

例如

b /path/to/module.py:34
> Breakpoint 1 at /path/to/module.py:34