有可能告诉python脚本在某个时刻停止并以交互方式提供给你手,例如使用ipython吗?

sta*_*tti 5 python

假设我有一个脚本可以做很多事情,并且在接近结尾的地方不能很好地工作.我希望能够start_ipython()在这一点上添加一个函数,这会在此时停止脚本,让我用ipython检查变量等等.我怎样才能做到这一点?

Nou*_*him 15

请注意,这在IPython-0.11中已更改.而不是下面描述的内容,只需使用以下导入:

from IPython import embed as shell
Run Code Online (Sandbox Code Playgroud)

以下答案适用于0.11之前的IPython版本.


在您想要进入ipython的区域中,定义它

def start_ipython():
   from IPython.Shell import IPShellEmbed
   shell = IPShellEmbed()
   shell()
Run Code Online (Sandbox Code Playgroud)

并调用start_ipython你想要放入解释器的地方.

这将使你进入一个翻译,并将保留locals()在那一点.

如果您想要常规shell,请执行此操作

def start_python():
   import code
   code.interact()
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看上述功能的文档.我建议您尝试ipython,如果它抛出一个ImportError,切换到正常,这样即使没有安装ipython也能正常工作.


Dan*_*man 6

最简单的方法是使用内置调试器.在您希望执行停止时,只需执行以下操作:

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

并且您将被转储到pdb shell中,这允许您检查变量并更改它们.

还有一个外部ipdb包,您可以通过easy_install它来以相同的方式工作.