2010-05-21 8 views
5

In einer verwandten Frage und Antwort here stellte jemand die Hypothese, dass Python-Shell innerhalb von Emacs (23.2) wurde Block-gepuffert statt Zeile gepuffert. Die empfohlene Lösung bestand darin, sys.stdout.flush() an der Stelle in meinem Skript hinzuzufügen, an der stdio seinen Inhalt in die Python-Shell schreiben soll.Emacs/Python: Ausführen von Python-Shell in Zeile gepuffert vs. Block gepufferter Modus

Gibt es eine Möglichkeit, python-shell (läuft in emacs 23.2 unter Windows, nicht Linux) in a) zu denken, es ist an ein TTY oder b) mit Linie gepuffert statt Block-gepuffertem Modus? Ich verstehe nicht, warum ich das in IDLE machen könnte, aber nicht in Emacs.

Ich würde lieber Emacs anpassen als sys.stdout.flush() in meinen Skripten hinzufügen. Nenn mich faul :-).

Danke,

Mike

Antwort

4

Für diejenigen fragen, ich glaube, das entsprechende Verhalten here diskutiert wird, in Emacs "7. Subprozesse \ 7.3 Buffering in Muscheln und Teilprozessen".

"In einem Shell-Puffer ist stdout ein Pipe-Handle und wird daher in Blöcken gepuffert. Wenn Sie möchten, dass sich das Pufferverhalten Ihres Programms anders verhält, muss das Programm selbst geändert werden setbuf und setvbuf, um die Pufferungssemantik zu manipulieren. "

, indem Sie die folgenden Gelöst meiner init.el (siehe diesen Link SO here für weitere Details):

(setenv "PYTHONUNBUFFERED" "x") 
+0

+1 Selbst Antworten für so gut sind – msw

Verwandte Themen