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

sco*_*ang 6 python pdb

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

The specified object 'CaptureManager.frame' is not a function or was not found along sys.path
Run Code Online (Sandbox Code Playgroud)

我google了一下,找到了解决办法:

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

sys.path.append(os.path.join(os.getcwd(),"project_cameo"))
Run Code Online (Sandbox Code Playgroud)

但是几次之后,我变得非常恼火,因为每次重新启动调试会话时我都必须这样做。有没有一种“聪明”的方法来做到这一点?

ber*_*lem 7

根据这个答案,你也可以通过编写的完整路径,文件名(或相对路径的目录上设置一个断点sys.path

例如

b /path/to/module.py:34
> Breakpoint 1 at /path/to/module.py:34
Run Code Online (Sandbox Code Playgroud)


Che*_* A. 3

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

从文档中,

sys.path:指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 以及依赖于安装的默认值初始化。

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

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