Use IPython magic functions in ipdb shell

前端 未结 2 969
醉酒成梦
醉酒成梦 2021-01-30 22:53

When debugging Python script using ipdb my_script.py, I want to use IPython magic functions like %paste, %cd in ipdb debug se

相关标签:
2条回答
  • 2021-01-30 23:37

    You can open a IPython shell inside a stack, just like pdb does. Do the following:

    • Import embed() from IPython, and put it inside your code.
    • Run the script

    Example:

    from IPython import embed
    
    def some_func():
        i = 0
        embed()
        return 0
    

    In Python shell:

    >>> te.func()
    
    IPython 1.0.0 -- An enhanced Interactive Python.
    (...)
    
    In [1]: %whos
    
    Variable   Type    Data/Info
    i          int     0
    
    In [2]:
    

    Was that what you were looking for?

    0 讨论(0)
  • 2021-01-30 23:52

    According to the ipdb Github repo magic IPython functions are not available. Fortunately, the IPython debugger provides a couple of clues of how to get this functionality without launching a separate IPython shell.

    Here is what I did to run %cpaste:

    ipdb> from IPython import get_ipython
    ipdb> shell = get_ipython()
    ipdb> shell.find_line_magic('cpaste')()
    Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
    :for i in range(0,5):
    :       print i
    :--
    0
    1
    2
    3
    4
    

    This way, you can step through your code and have access to all the IPython magic functions via the method find_line_magic(your_magic_function).

    0 讨论(0)
提交回复
热议问题