如何调试 .egg 文件中的 python 源文件

How to debug a python source file within a .egg file

我正在尝试调试 python 脚本中的错误,该脚本使用捆绑为 .egg 文件的模块中的代码。

使用 IDLE 3.6.3 调试器注意: 调试器 window 的标题是“Debug Control"),它能够跟踪在各个模块中执行的命令以及在执行这些代码行时可用的局部和全局变量。这与源脚本是否在 .egg 文件中无关。

对于不在 .egg 文件中(但在 PC 上的文件夹中)的脚本中的代码行,我可以通过 [=52= 从 IDLE 访问源文件] 在 调试控件 window 的代码行 上,然后选择“转到源代码行”上下文菜单。源文件在 IDLE 编辑器 window 中打开,相关行号突出显示。在此编辑器 window 中,我可以 right-click 在任何行和 set/clear 断点。

当我尝试对位于 egg 文件 中的脚本“转到源代码行”时出现问题。调试器也无法 单步执行 这些脚本中的代码。然而,我已经能够从 egg 文件 中提取脚本,并可以在 IDLE 编辑器 window(或任何其他文本编辑器)中查看它。

有没有办法在 .egg 文件中调试我无法弄清楚的脚本,或者有没有办法 link 我拥有的源脚本提取到调试器,以便它不必依赖 .egg 文件中的调试器? (我正在使用 python 版本 3.6.3)

egg file 是一个专门的 zip 文件,将 Python 模块和其他数据打包在一起。模块可以是任何 .py(o) python 源代码、.pyc 编译 Python 和 .exe 编译 C(++)。 Python 可以从 zip 文件中导入模块。 AFAIK,IDLE 无法从鸡蛋中读取文本文件。

根据'kmario23' 对上述SO 问题的回答,可以将.egg 更改为.zip,然后浏览内容。然后您可以判断是否有任何模块是 .py 文件。

我怀疑您可以将模块提取到具有相同名称(减去 .egg)的普通目录中,然后 python 导入提取的模块。然后 IDLE 可以读取任何 .py 文件。您可能需要将 .egg 重命名为,例如 .eggback,以防止使用它。我是根据我使用普通 zip 文件的经验猜测的,因为我从未操纵过 egg 文件。可能有一些细节被我遗漏了。