2009-08-19 8 views
10

Estoy confundido por el comportamiento de mi Mac OS X Terminal y mi shell Django manage.py y pdb.¿Por qué la entrada estándar no se muestra mientras escribo en la aplicación de terminal Mac OS X?

Cuando inicio un nuevo terminal, la entrada estándar se muestra a medida que escribo. Sin embargo, si hay un error, de repente la entrada estándar no aparece en la pantalla. Este error continúa hasta que apago esa ventana de terminal.

La entrada todavía se está capturando como puedo ver la salida estándar.

E.g. en pdb.set_trace() puedo 'l' mostrar donde estoy en el código. Sin embargo, la 'l' no se mostrará, solo un mensaje vacío.

Esto hace que sea difícil de depurar porque no puedo determinar lo que estoy escribiendo.

¿Qué puede ir mal y qué se puede hacer para solucionarlo?

+0

Defina "Sin embargo, si hay un error," ¿Qué error? ¿Dónde? ¿Estás en IDLE? ¿Ejecutando desde el prompt '>>>' de python? ¿Qué, específicamente, está sucediendo? Claramente, un proceso ha restablecido su terminal. La pregunta es: ¿cuál? –

+0

Estoy ejecutando el shell interactivo de python: Creo que el error que provoca esto es: error: [Errno 32] Broken pipe – BryanWheelock

+0

Tuve un problema similar en el shell de Ubuntu si mi servidor de desarrollo ha estado funcionando por un tiempo. Puede haber algún tipo de búfer máximo que impida que aparezcan más caracteres escritos. Simplemente abra una nueva terminal o escriba clear. –

Respuesta

-1

intente instalar readline en Mac OS X:

$ sudo easy_install readline 

Esta es una suposición ciega, pero tal vez los que resuelve su problema.

+0

Ya estoy usando readline 2.5.1 – BryanWheelock

+0

¿Qué es easy_install? – hhafez

+0

ver http://en.wikipedia.org/wiki/Easy_install – reto

3

Si sale de pdb puede escribir reset y volverá el eco de entrada estándar. No estoy seguro si puedes ejecutar algo similar dentro de pdb. Sin embargo, borrará lo que se muestra actualmente.

19

Quizás esto se deba a que hubo un error al ejecutar Django. A veces ocurre que la entrada estándar desaparece porque se usó stty. Puede ocultar manualmente su entrada escribiendo:

$ stty -echo

Ahora usted no verá lo que ha escrito. Para restaurar este y resolver su problema sólo tiene que escribir

$ stty echo

Esto podría ayudar.

Cuestiones relacionadas