2009-08-19 6 views
10

Sono confuso da un comportamento del mio terminale Mac OS X e della mia shell Django manage.py e pdb.Perché l'input standard non viene visualizzato durante la digitazione nell'applicazione terminale Mac OS X?

Quando avvio un nuovo terminale, l'ingresso standard viene visualizzato mentre scrivo. Tuttavia, se si verifica un errore, improvvisamente l'input standard non viene visualizzato sullo schermo. Questo errore continua fino a quando non chiudo quella finestra del terminale.

L'ingresso viene ancora catturato poiché è possibile vedere l'uscita standard.

E.g. in pdb.set_trace() Posso 'l' visualizzare dove sono nel codice. Tuttavia, la 'l' non verrà visualizzata, solo un prompt vuoto.

Questo rende difficile eseguire il debug perché non riesco a determinare ciò che sto scrivendo in.

Cosa potrebbe andare storto e cosa posso fare per risolvere il problema?

+0

Si prega di definire "Tuttavia, se c'è un errore," Quale errore? Dove? Sei in IDLE? Esecuzione dal prompt di python '>>>'? Cosa - in particolare - sta succedendo? Chiaramente, un processo ha ripristinato il tuo terminale. La domanda è: quale? –

+0

Sto eseguendo la shell interattiva python: credo che l'errore che lo ha causato sia: errore: [Errno 32] Tubo rotto – BryanWheelock

+0

Avevo un problema simile nella shell di Ubuntu se il mio server di sviluppo era in esecuzione da un po '. Potrebbe esserci una sorta di buffer massimo che impedisce la visualizzazione di ulteriori caratteri digitati. Basta aprire un nuovo terminale o digitare clear. –

risposta

-1

provare ad installare readline su Mac OS X:

$ sudo easy_install readline 

Questa è una supposizione cieco, ma forse risolve il problema.

+0

Sto già utilizzando readline 2.5.1 – BryanWheelock

+0

cosa è easy_install? – hhafez

+0

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

3

Se si esce da pdb è possibile digitare reset e l'eco di input standard restituirà. Non sono sicuro di poter eseguire qualcosa di simile in pdb. Cancellerà ciò che è attualmente visualizzato comunque.

19

Forse perché c'è stato un errore durante l'esecuzione di Django. A volte capita che l'input std scompaia perché è stato utilizzato stty. È possibile nascondere manualmente l'input digitando:

$ stty -echo

Ora non si vedrà quello che avete digitato. Per ripristinare questo e risolvere il problema è sufficiente digitare

$ stty echo

Questo potrebbe aiutare.