簡體   English   中英

Emacs / Python:在行緩沖與塊緩沖模式下運行python-shell

[英]Emacs/Python: running python-shell in line buffered vs. block buffered mode

這里的相關問題和答案中,有人假設emacs(23.2)中的python-shell是塊緩沖而不是行緩沖。 建議修復是將sys.stdout.flush()添加到我的腳本中的位置,我希望stdio將其內容刷新到python-shell。

有沒有辦法欺騙python-shell(在Windows上的emacs 23.2中運行,而不是在Linux上運行)a)認為它附加到TTY或b)使用行緩沖而不是塊緩沖模式? 我不明白為什么我能在IDLE中執行此操作但不能在emacs中執行此操作。

我寧願自定義emacs而不是在我的腳本中添加sys.stdout.flush()。 叫我懶惰:-)。

謝謝,

麥克風

對於那些想知道的人,我認為這里討論了相關的行為,在emacs“7. Subprocesses \\ 7.3 Buffing in shells and subprocesses”中。

“在shell緩沖區中,stdout是一個管道句柄,所以在塊中緩沖。如果你希望程序的緩沖行為表現不同,程序本身就必須改變;你可以使用setbuf和setvbuf來操縱緩沖語義。“

解決方法是將以下內容添加到我的init.el中(有關更多詳細信息,請參閱此處的 SO鏈接):

(setenv "PYTHONUNBUFFERED" "x")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM