Get IPython tab completion for ipdb

前端 未结 5 1444
名媛妹妹
名媛妹妹 2020-12-31 00:28

I have IPython(0.13.1) and ipdb(0.7) installed, I inserted the line import ipdb;ipdb.set_trace() in my script and ran python my_

相关标签:
5条回答
  • 2020-12-31 00:55

    As of 2019-11 few things changes so here is what should fix it:

    pip install --upgrade ipdb gnureadline ptpython
    
    # Handly to enable ipdb on pytest exceptions
    export PYTEST_ADDOPTS='--pdb --pdbcls=IPython.terminal.debugger:Pdb'
    
    0 讨论(0)
  • 2020-12-31 00:59

    I had the same problem on ubuntu 14.04 and got it fixed with:

    apt-get install libncurses5-dev

    pip install --upgrade readline

    0 讨论(0)
  • 2020-12-31 01:02

    I had the same phenomenon on my Mac using ipython==0.13.2 and ipdb==0.7 inside a Python 2.7.5 virtualenv. When I tried to debug, I had the tab completion for the builtins, but not for the variables in the current scope. I discovered, that I had a custom .pdbrc located in my home folder (http://docs.python.org/2/library/pdb.html#id2). After I commented all the stuff out, the tab completion worked again.

    I don't know when and why I added this file, but this is what was in there:

    # See http://docs.python.org/2/library/pdb.html#id2 for the structure of this file.
    import pdb
    
    # 'inspect x' will print the source code for a method, class or function.
    alias inspect import inspect;print inspect.getsource(%1)
    alias i import inspect;print inspect.getsource(%1)
    # 'help x' opens the man-style help viewer from the interpretter on an object
    alias help !print help(%1)
    alias h !print help(%1)
    # For ordinary Python objects, ppo will pretty-print members and their values.
    alias ppo pp %1.__dict__
    # ppio runs ppo over a sequence of objects
    alias ppio pp [a.__dict__ for a in %1]
    
    # This tries to enable tab-completion of some identifiers.
    !import rlcompleter
    !pdb.Pdb.complete = rlcompleter.Completer(locals()).complete
    
    # Taken from https://gist.github.com/1125049
    # There are a couple of edge cases where you can lose terminal
    # echo. This should restore it next time you open a pdb.
    !import termios, sys
    !termios_fd = sys.stdin.fileno()
    !termios_echo = termios.tcgetattr(termios_fd)
    !termios_echo[3] = termios_echo[3] | termios.ECHO
    !termios_result = termios.tcsetattr(termios_fd, termios.TCSADRAIN, termios_echo)
    

    Further research is needed to check what breaks the tab-completion in there...

    0 讨论(0)
  • 2020-12-31 01:18

    Does easy_install readline help?

    0 讨论(0)
  • 2020-12-31 01:20

    I had the same problem and I fixed it with:

    sudo pip install --upgrade ipdb ipython readline
    

    If you don't have readline installed make sure to install libncurses5-dev as @musashi14 suggested.

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