Spyder 4: стрелки вверх/вниз в консоли IPython (прокрутка для ввода программы)

#python #ipython #spyder

Вопрос:

Я обновился до Spyder 4.2.0 в декабре (2020). Ранее я использовал Spyder 3.x. Я запускаю свой код из редактора в консоли IPython. Это простые программы, которые запрашивают ввод с консоли. Это похоже на запуск из командной строки ( python program.py args ).

Когда я тестирую, я часто использую разные комбинации одного и того же ввода (например, имена пользователей). С помощью Spyder 3.x я мог прокручивать предыдущие входные данные с помощью стрелок вверх/вниз во время запуска программы, чтобы повторно использовать ранее введенное значение. Я не могу понять, как добиться такого же поведения с Spyder 4. Пример показан в блоке кода ниже.

 runfile('E:/walker/optimization/test_prog.py', args='../large', wdir='E:/walker/optimization')
Loading data...Data loaded.
Input Name1: [I input the 1st name]
Input Name2: [I input the 2nd name]
Some printed output here...

Now the program prompts for new input...
Input Name1: [I want to reenter name2 above by going back with the up arrow]
Input Name2: [I want to reenter name1 above by going back with the up arrow]
 

Я не могу понять, как это сделать с Spyder 4.x. Я подозреваю, что что-то изменилось с обновлением Spyder 3. Я посмотрел настройки для IPython и запустил их в разделе Инструменты/Настройки. Никакого упоминания о стрелках или прокрутке ввода.
Примечание: Прокрутка в консоли отлично работает, когда я кодирую в консоли и хочу получить предыдущую команду Python. Этот вопрос относится только к вводу программы во время выполнения кода из редактора.

Комментарии:

1. ( Сопровождающий Spyder здесь ) То, как мы работаем input в Spyder 4, значительно изменилось по сравнению со Spyder 3. Кроме того, учитывая, что нам потребуются значительные временные затраты для поддержки этого варианта использования, а выигрыш очень мал, я не думаю, что мы восстановим эту функциональность, извините.

2. @Карлос Кордоба, спасибо за объяснение-по крайней мере, я ничего не упускаю. К сожалению, это не будет реализовано. Я удивлен, что это так сложно. Я могу получить предыдущие входные данные в окне командной строки Windows (после ввода python prog.py ). Еще раз спасибо.

3. Проблема в том, что наша консоль IPython не является реальным системным терминалом (например cmd.exe , или xterm ) и не использует для работы терминальные технологии. Вместо этого это графическое приложение, которое имитирует внешний вид терминала. Итак, чтобы поддержать этот вариант использования в Spyder 4 , нам нужно добавить историю команд в input (отдельно от истории IPython и IPdb) и извлечь ее с помощью стрелок вверх и вниз. Вот почему я сказал, что это будет слишком много работы за слишком малую выгоду (вы первый, кого я слышал, кому это нужно).

4. Интересный. Не беспокойтесь. Я использую это, когда запускаю простые тестовые примеры и мне нужно протестировать несколько другие входные данные. Я испортился с Spyder 3. 🙂 Теперь я просто запускаю эти тесты в командном окне.