2010-05-21 102 views
5

在相关的问题和答案here中,有人假设emacs(23.2)中的python-shell是块缓冲而不是行缓冲的。建议的修复方法是将sys.stdout.flush()添加到脚本中,我希望stdio将其内容刷新到python-shell。Emacs/Python:在线缓冲区与块缓冲区模式下运行python-shell

有没有办法让python-shell(在Windows上运行emacs 23.2而不是Linux)进入a)认为它连接到TTY或b)使用行缓冲而不是块缓冲模式?我不明白为什么我可以在IDLE中执行此操作,但不能使用emacs。

我宁愿自定义emacs,而不是在我的脚本中添加sys.stdout.flush()。叫我懒:-)。

感谢,

迈克

回答

4

对于那些想知道,我想相关的行为是 “在壳和子7.子进程\ 7.3缓冲” 讨论here,在Emacs。如果你希望你的程序的缓冲行为有不同的表现,程序本身将不得不改变;你可以使用setbuf和setvbuf来操纵缓冲语义。“

通过添加以下到我的init.el解决(更多详情参见本SO链接here):

(setenv "PYTHONUNBUFFERED" "x") 
+0

+1自答案是良好的SO – msw 2010-05-21 15:35:22