2009-08-19 73 views
10

我很困惑我的Mac OS X終端和我的Django manage.py shell和pdb的一些行爲。爲什麼標準輸入不顯示爲我在Mac OS X Terminal應用程序中輸入的內容?

當我啓動一個新的終端時,標準輸入顯示爲I型。但是,如果出現錯誤,突然標準輸入不會出現在屏幕上。這個錯誤一直持續到我關閉終端窗口。

輸入仍然被捕獲,因爲我可以看到標準輸出。

E.g.在pdb.set_trace()我可以'l'來顯示我在代碼中的位置。但是,'l'不會顯示,只是一個空的提示。

這使得很難調試,因爲我不能確定我在我打字。

出了什麼問題去,我能做些什麼來解決這個問題?

+0

請定義「但是,如果有錯誤,」什麼錯誤?哪裏?你在空閒嗎?從python的'>>>'提示符運行?什麼 - 具體 - 正在發生?顯然,一個過程已經重置了您的終端。問題是:哪一個? – 2009-08-19 19:12:56

+0

我正在運行python交互式shell:我相信造成這種錯誤的原因是: 錯誤:[Errno 32] Broken pipe – BryanWheelock 2009-08-19 19:46:25

+0

如果我的dev服務器已經運行了一段時間,我在Ubuntu shell中遇到了類似的問題。可能會有某種最大緩衝區阻止進一步輸入的字符出現。只需打開一個新的終端或鍵入清除。 – 2009-08-20 03:49:19

回答

-1

嘗試在Mac OS X上安裝的readline:

$ sudo easy_install readline 

這是一個盲目的猜測,但也許它解決您的問題。

+0

我已經在使用readline 2.5.1 – BryanWheelock 2009-08-20 18:38:14

+0

easy_install是什麼? – hhafez 2010-01-07 06:20:21

+0

請參閱http://en.wikipedia.org/wiki/Easy_install – reto 2010-01-07 16:56:42

3

如果您退出pdb,您可以鍵入reset,並且標準輸入回顯將返回。我不確定你是否可以在pdb中執行類似的東西。它將清除當前顯示的內容。

19

也許這是因爲運行Django時出錯。有時會發生std輸入消失,因爲使用了stty。您可以通過鍵入手動隱藏您的輸入:

$ stty -echo

現在,你不會看到你鍵入的內容。要恢復這一點,並解決您的問題,只要輸入

$ stty echo

這可能會有幫助。

相關問題