Emacs/Python: рабочая оболочка Python в строке, буферизованной по сравнению с блоком, буферизовала режим

В связанном вопросе и ответе здесь, кто-то выдвинул гипотезу, что оболочка Python в emacs (23.2) была с буфером блока вместо с буфером строки. Рекомендуемая фиксация должна была добавить sys.stdout.flush () к пятну в моем сценарии, где я хочу, чтобы stdio сбросил свое содержание к оболочке Python.

Должен там некоторым образом обмануть оболочку Python (работающий в emacs 23.2 в Windows, не Linux) в любые a) размышление это присоединено к TTY или в b) использование, с буфером строки вместо режима с буфером блока? Я не вижу, почему я смог бы выполнить, это БЕЗДЕЙСТВУЕТ, но не emacs.

Я настроил бы emacs, чем добавил бы sys.stdout.flush () всюду по моим сценариям. Назовите меня ленивым :-).

Спасибо,

Mike

5
задан Community 23 May 2017 в 11:55
поделиться

1 ответ

Для тех, кому интересно, я думаю, обсуждается соответствующее поведение здесь , в emacs "7. Подпроцессы \ 7.3 Буферизация в оболочках и подпроцессах".

«В буфере оболочки stdout является дескриптором канала и поэтому буферизуется блоками. Если вы хотите, чтобы буферизация вашей программы велась иначе, необходимо изменить саму программу; вы можете использовать setbuf и setvbuf для управления семантикой буферизации. "

Решено добавлением следующего текста в мой init.el (см. эту ссылку SO здесь для более подробной информации):

(setenv "PYTHONUNBUFFERED" "x")
4
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: