我有一个Python脚本,我想执行它到某一点,然后停止,并保持解释器打开,所以我可以看到它定义的变量,等等.
我知道我可以生成异常,或者我可以通过运行来调用调试器pdb.set_trace()
,然后停止调试器,这是我目前使用的.
...但是有一个命令只会停止脚本,好像它已经完全结束了吗?这相当于注释脚本的其余部分(但我不喜欢这样做),或者return
在函数中添加早期语句.
似乎这样的东西必须存在,但到目前为止我还没有找到它.
编辑:我的用例的更多细节
我通常在Spyder中使用常规Python控制台.IPython似乎是一件好事,但(至少对于我目前使用的版本,2.2.5)一些普通的控制台功能在IPython(内省,自动完成)中不能很好地工作.通常,我的代码生成matplotlib数字.在调试模式下,那些无法更新(据我所知),这就是为什么我需要完全脱离脚本,而不是解释器).调试器的另一个限制是我无法在其中执行循环:您可以将循环的代码复制/粘贴到常规控制台并让它执行,但这在调试器中不起作用(至少在我的Spyder中)版).
如果使用python -i
,则在脚本结束后,解释器将保持活动状态. raise SystemExit
将是迫使它以任意点结束的最简单方法.
如果您拥有ipython(高度推荐),则可以转到程序中的任意位置并添加以下几行
import IPython IPython.embed()
一旦程序到达该点,该embed
命令将在该上下文中打开一个新的IPython Shell。
我真的很想为那些我不想走完整的pdb路由的事情这么做。