我经常会遇到这样一个问题,即我将编写一个脚本,并且我要编写脚本的一部分,我想以交互方式使用一些变量.到达那个部分需要运行我已编写的大部分脚本.
在这种情况下,从shell内部运行此程序并非易事.我不得不以某种方式重新创建该函数的条件.
我想要做的是调用一个函数,比如runshell(),它将在程序中的那一点运行python shell,将所有变量保持在范围内,允许我在其中查找.
我该怎么做呢?
Mic*_*man 50
import code
code.interact(local=locals())
Run Code Online (Sandbox Code Playgroud)
但是使用Python调试器可能更符合您的要求:
import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
sta*_*icd 19
到目前为止,我发现最方便的方法是:
import IPython
IPython.embed()
Run Code Online (Sandbox Code Playgroud)
您将获得所有全局和局部变量以及IPython的所有生物舒适:选项卡完成,自动缩进等.
您必须安装IPython模块才能使用它:
pip install ipython
Run Code Online (Sandbox Code Playgroud)
为了实用,我想补充一点,您可以将调试器跟踪放在一个单元中:
import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
这是一个很好的行添加到支持片段的编辑器,如TextMate或Vim + SnipMate.我把它设置为将"break"扩展到上面的一个衬里.
您可以使用python调试器(pdb)set_trace函数.
例如,如果您调用这样的脚本:
def whatever():
x = 3
import pdb
pdb.set_trace()
if __name__ == '__main__':
whatever()
Run Code Online (Sandbox Code Playgroud)
您在调用set_trace时得到范围:
$ python ~/test/test.py
--Return--
> /home/jterrace/test/test.py(52)whatever()->None
-> pdb.set_trace()
(Pdb) x
3
(Pdb)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14392 次 |
| 最近记录: |