如何停止Python脚本但保持解释器运行

Zak*_*Zak 7 python python-2.7

我有一个Python脚本,我想执行它到某一点,然后停止,并保持解释器打开,所以我可以看到它定义的变量,等等.

我知道我可以生成异常,或者我可以通过运行来调用调试器pdb.set_trace(),然后停止调试器,这是我目前使用的.

...但是有一个命令只会停止脚本,好像它已经完全结束了吗?这相当于注释脚本的其余部分(但我不喜欢这样做),或者return在函数中添加早期语句.

似乎这样的东西必须存在,但到目前为止我还没有找到它.

编辑:我的用例的更多细节

我通常在Spyder中使用常规Python控制台.IPython似乎是一件好事,但(至少对于我目前使用的版本,2.2.5)一些普通的控制台功能在IPython(内省,自动完成)中不能很好地工作.通常,我的代码生成matplotlib数字.在调试模式下,那些无法更新(据我所知),这就是为什么我需要完全脱离脚本,而不是解释器).调试器的另一个限制是我无法在其中执行循环:您可以将循环的代码复制/粘贴到常规控制台并让它执行,但这在调试器中不起作用(至少在我的Spyder中)版).

jas*_*per 7

如果使用python -i <script>,则在脚本结束后,解释器将保持活动状态. raise SystemExit将是迫使它以任意点结束的最简单方法.


Lag*_*aer 6

如果您拥有ipython(高度推荐),则可以转到程序中的任意位置并添加以下几行

import IPython
IPython.embed()
Run Code Online (Sandbox Code Playgroud)

一旦程序到达该点,该embed命令将在该上下文中打开一个新的IPython Shell。

我真的很想为那些我不想走完整的pdb路由的事情这么做。


Gan*_*rer 3

如果您使用的是 Python Shell,只需按CTRL + C即可引发键盘中断。然后您可以检查抛出异常时程序的状态。

x = 0
while True:
    x += 1
Run Code Online (Sandbox Code Playgroud)

运行脚本...

Python 2.7.6(默认,2013 年 11 月 10 日,19:24:18)[MSC v.1500 32 位(Intel)] 在 win32 上键入“copyright”、“credits”或“license()”以获取更多信息。>>> ================================== 重新启动 ============== =================

回溯(最近一次调用最后一次):

文件“C:/Python27/test.py”,第 2 行,位于

而真实:

键盘中断

>>> x

15822387