Настоящая проблема заключается в том, что когда вы запускаете команду в любой из терминальных программ Cygwin, таких как mintty, они не действуют как консоли Windows.Только Windows Console-based, такие как CMD или Console2, делают это.Таким образом, с терминалами Cygwin Windows python.exe не думает, что общается с интерактивной консолью.
Это приводит к буферизации вывода вместо очистки буферов в каждой строке, как это делается в интерактивных сеансах.Вот почему добавление Amro flush () в каждой строке устраняет симптом, но означает изменение кода.
Одно из решений без изменения кода - отключить буферизацию в Python с помощью флага -u наКомандная строка или установка переменной среды PYTHONUNBUFFERED.
export PYTHONUNBUFFERED=1
/cydrive/c/Python27/python.exe foo.py
или
/cydrive/c/Python27/python.exe -u foo.py
или запуск в интерактивном режиме
/cydrive/c/Python27/python.exe -i foo.py
Вы также не сможете запуститьинтерактивный режим Windows python.exe в терминале Cygwin.Он не вызовет интерактивную сессию, а просто зависнет.Я считаю, что лучшее решение, по-видимому, заключается в использовании 'cygstart' (лучше, чем использование опции '-i'):
cygstart /cygdrive/c/Python27/python.exe
И это также работает с ipython (если установлен):
cygstart /cygdrive/c/Python27/Scripts/ipython.exe