Почему стандартный ввод не отображается при вводе в приложении Mac OS X Terminal?

Я смущен некоторым поведением моего терминала Mac OS X и моей оболочки Django manage.py и pdb.

Когда я запускаю новый терминал, стандартный ввод отображается по типу ввода. Однако, если есть ошибка, внезапно на экране не появляется стандартный ввод. Эта ошибка продолжается до тех пор, пока я не закрою это окно терминала.

Ввод все еще записывается, поскольку я вижу стандартный вывод.

например. in pdb.set_trace() Я могу "l" показать, где я нахожусь в коде. Однако "l" не будет отображаться, просто пустое приглашение.

Это затрудняет отладку, потому что я не могу определить, что я набираю.

Что может быть не так, и что я могу сделать, чтобы исправить это?

Ответ 1

Возможно, это потому, что при запуске Django произошла ошибка. Иногда бывает, что вход std исчезает, потому что используется stty. Вы можете вручную скрыть свой ввод, набрав:

$ stty -echo

Теперь вы не увидите, что вы набрали. Чтобы восстановить это и решить вашу проблему, просто введите

$ stty echo

Это может помочь.

Ответ 2

Если вы выйдете из pdb, вы можете ввести reset, и будет возвращено стандартное входное эхо. Я не уверен, что вы можете выполнить что-то подобное в pdb. Тем не менее, он стирает то, что в настоящее время отображается.

Ответ 3

Попробуйте установить readline в Mac OS X:

$ sudo easy_install readline

Это слепая догадка, но, возможно, она решает вашу проблему.