trucos notebook help functions python debugging ipython pdb

notebook - Obtener la pestaña de IPython completada para ipdb



python jupyter timeit (4)

¿ easy_install readline ayuda?

Tengo IPython(0.13.1) e ipdb(0.7) , import ipdb;ipdb.set_trace() la línea de import ipdb;ipdb.set_trace() en mi script y ejecuté python my_script.py . Ahora estoy en el indicador de ipdb y hay algo de autocompletado (por ejemplo, una pestaña simple) pero no es lo mismo que el autocompletado que recibo cuando ingreso IPython. En las solicitudes de requests. ipdb requests. luego <tab> (después de la importación) no me da una lista de atributos como en IPython. ¿Cómo puedo completar la misma pestaña que en IPython con ipdb?

Por cierto, cuando ejecuto python -m ipdb my_script.py la finalización de la pestaña funciona igual que en IPython, pero la desventaja de esto es que inicia el depurador desde la primera línea en lugar de la línea que puse import ipdb;ipdb.set_trace() .


Tuve el mismo fenómeno en mi Mac usando ipython==0.13.2 y ipdb==0.7 dentro de un virtualenv de Python 2.7.5 2.7.5. Cuando intenté depurar, tuve la finalización de la pestaña para los elementos incorporados, pero no para las variables en el ámbito actual. Descubrí que tenía un .pdbrc personalizado ubicado en mi carpeta de inicio ( http://docs.python.org/2/library/pdb.html#id2 ). Después de comentar todas las cosas, la finalización de la pestaña funcionó de nuevo.

No sé cuándo y por qué agregué este archivo, pero esto es lo que había allí:

# 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)

Se necesita más investigación para comprobar qué rompe la tabulación completa allí ...


Tuve el mismo problema en Ubuntu 14.04 y lo solucioné con:

apt-get install libncurses5-dev

pip install --upgrade readline


Tuve el mismo problema y lo solucioné con:

sudo pip install --upgrade ipdb ipython readline

Si no tiene instalado readline asegúrese de instalar libncurses5-dev como se sugiere en @ musashi14.