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
我正在编写一个 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