我最近从Matlab转到了Python。 Python是一种更好的语言(从计算机科学家的角度来看),但Python IDE似乎都缺少一个重要的东西:
正确的交互式调试器。
我正在寻找:
通过单击编辑器中的一行代码旁边以图形方式设置断点的功能。
在调试器中停止时运行任何代码的能力,包括从我的代码调用函数,显示新窗口,播放音频等。
发生错误时,调试器应自动在错误行打开交互式控制台。
使用交互式控制台完成后,您可以恢复正常执行。
Matlab具有所有这些功能,并且它们工作得非常好,但我无法在Python工具中找到它们。
我试过了:
PyCharm:交互式控制台很笨重,经常无法出现,并且一直崩溃(我尝试了几个不同的版本和操作系统)。
IPython:无法设置断点 - 以编程方式启动Python控制台:您必须停止代码,插入额外的代码行,然后从头开始再次执行此操作。此外,您无法在不重新导入的情况下访问已导入的功能。
能够调试和修复问题他们第一次出现对我来说非常重要,因为我在通常需要几十分钟重新运行的程序(计算神经科学)中工作。
结论:目前没有办法在Python中完成所有这些工作。让我们希望PyLab的发展加速。
答案 0 :(得分:4)
有many Python IDEs。这是一个主题:What IDE to use for Python?
PyDev有这个。双击灰色边距栏。
PyDev has this。这不是唯一的一个。 PyScripter's stated features似乎包含了此内容。
PyDev这样做。 (我想。或者在最坏的情况下,您是否需要双击控制台消息,指出错误在代码中的位置?)
PyDev有这个。它被称为“简历”。它就是工具栏中绿色的“游戏”三角形。其他一些软件称此功能为“继续”。
答案 1 :(得分:3)
在代码的顶部,写上
import pdb
在您的代码中,在您想要调试的任何地方使用以下语句。
pdb.set_trace()
每当满足set_trace()
语句时,您将拥有一个交互式shell。
然后,您可以使用step(s)
,next(n)
,continue(c)
等来检查执行流程,并打印变量值print var
有关pdb的更多详细信息,请refer here
答案 2 :(得分:2)
我一直在寻找相同的东西,但不幸的是,Python IDE在这一点上并不像Matlab那样功能齐全。对于科学编程,您还希望图形/绘图在完全不同的线程中运行,因此IPython集成至关重要。据我所知,Matlab IDE功能从调试器更改工作区,然后影响随后运行的代码,这是非常独特的。每个功能都存在于 some IDE中,但并不存在:
pdb
,它缺乏执行任何代码的要求,并且在继续之后使这些代码影响命名空间。 / LI>
据我所知,最接近Wing IDE。它是一种支持产品,但是如果您从Matlab转换89美元/年用于非商业用途应该是可接受的(您可以先评估它)。但对我来说,我最终决定改变我的工作流程,而不是使用任何复杂的IDE。几年前我看的时候,情况可能也有所改善。
您可能也会对2013年4月的这篇文章感兴趣Evaluating IDEs for Scientific Python。它也没有真正得出结论。
答案 3 :(得分:1)
您可以在iPython Notebook中完成所有这些操作。使用magic命令%pdb在出错时停止。
答案 4 :(得分:0)
看到你是从Matlab来的,我建议你看看
该页面描述如下:
Python(x,y)是一个免费的科学和工程开发软件,用于基于Python编程语言,Qt图形用户界面和Spyder交互式科学开发环境的数值计算,数据分析和数据可视化。
它无法满足您的所有愿望,但当我开始使用Python时,它确实让我感觉很舒服。来自Matlab。
希望有所帮助