2009-08-19 4 views
10

Je suis confus par un certain comportement de mon terminal Mac OS X et mon shell Django manage.py et pdb.Pourquoi l'entrée standard n'est-elle pas affichée au cours de la saisie dans l'application Terminal de Mac OS X?

Lorsque je démarre un nouveau terminal, l'entrée standard est affichée en cours de saisie. Cependant, s'il y a une erreur, soudainement, l'entrée standard n'apparaît pas à l'écran. Cette erreur persiste jusqu'à ce que je ferme cette fenêtre de terminal.

L'entrée est toujours en cours de capture car je peux voir la sortie standard.

E.g. dans pdb.set_trace() Je peux «l» pour afficher où je suis dans le code. Cependant, le 'l' ne sera pas affiché, juste une invite vide.

Cela rend difficile de déboguer parce que je ne peux pas déterminer ce que je tape dans.

Que pourrait aller mal et que puis-je faire pour y remédier?

+0

Veuillez définir "Cependant, s'il y a une erreur", quelle erreur? Où? Êtes-vous à IDLE? En cours d'exécution à partir de l'invite python '>>>'? Qu'est-ce qui se passe - spécifiquement -? Clairement, un processus a réinitialisé votre terminal. La question est: laquelle? –

+0

Je lance le shell interactif python: Je crois que l'erreur à l'origine est: erreur: [Errno 32] Broken pipe – BryanWheelock

+0

J'ai eu un problème similaire dans le shell Ubuntu si mon serveur de dev a fonctionné pendant un certain temps. Il pourrait y avoir une sorte de tampon maximum qui empêche d'autres caractères typés d'apparaître. Il suffit d'ouvrir un nouveau terminal ou tapez clear. –

Répondre

-1

Essayez d'installer readline sur Mac OS X:

$ sudo easy_install readline 

Ceci est une supposition aveugle, mais peut-être cela résout votre problème.

+0

J'utilise déjà readline 2.5.1 – BryanWheelock

+0

qu'est-ce que c'est easy_install? – hhafez

+0

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

3

Si vous quittez pdb, vous pouvez taper reset et l'entrée standard echo retournera. Je ne suis pas sûr si vous pouvez exécuter quelque chose de similaire dans pdb. Il effacera ce qui est actuellement affiché cependant.

19

Peut-être parce qu'il y avait une erreur lors de l'exécution de Django. Parfois, il arrive que l'entrée std disparaisse car stty a été utilisé. Vous pouvez manuellement masquer votre entrée en tapant:

$ stty -echo

Maintenant, vous ne verrez pas ce que vous avez tapé. Pour restaurer cela et résoudre votre problème il suffit de taper

$ stty echo

Cela pourrait aider.