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

时间:2018-02-15 21:08:03

标签: python debugging python-idle egg

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

使用 IDLE 3.6.3调试器 NB:调试器窗口的标题为“调试控件”),它能够跟踪在各个模块中执行的命令以及执行这些代码行时可用的本地和全局变量。这与源脚本是否在 .egg 文件中无关。

对于不在.egg文件中的脚本(但在PC上的文件夹中)的代码行,我可以通过右键单击代码行从IDLE访问源文件调试控件窗口中,然后从上下文菜单中选择“转到源代码行”。源文件在 IDLE编辑器窗口中打开,并突出显示相关的行号。在此编辑器窗口中,我可以右键单击任意一行并设置/清除断点。

当我尝试“鸡蛋文件中的脚本的转到源代码行”时出现问题。调试器也无法进入这些脚本中的代码。然而,我能够从 egg文件中提取脚本,并可以在IDLE Editor窗口(或任何其他文本编辑器)中查看它。

有没有办法在 .egg 文件中调试我无法弄清楚的脚本,或者有没有办法将我提取的源脚本链接到调试器,这样它就不会必须依赖 .egg 文件中的那个? (我使用的是python版本3.6.3)

1 个答案:

答案 0 :(得分:1)

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文件的经验中猜测这一点,因为我从未操纵过一个鸡蛋文件。我可能省略了一些细节。