Многострочное редактирование прервано в IPython 7.0.1 - PullRequest
0 голосов
/ 12 октября 2018

Я использую IPython в оболочке zsh, и у меня возникают проблемы при определении функции с несколькими строками.

Например, в исходной оболочке Python я могу определить функцию f следующим образом:

>>> def f(x):
...     a = x + 1
...     return a
... 
>>>

Когда я сделал это в IPython, определение заканчивается сразу же, когда заканчивается строка 'a = x + 1'.Это выглядит так:

In [4]: def f(x): 
   ...:     a = x + 1                                                                                                                              

In [5]:   

Как я могу это исправить, изменив некоторые настройки или установив другую версию IPython?

Моя версия Python и IPython:

Python 3.5.6 |Anaconda, Inc.|  
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.

1 Ответ

0 голосов
/ 12 октября 2018

Это известная ошибка (см. Также this ).

Как видно из проблем, на которые я ссылался, это не ошибка в дистрибутиве Anacondaно кое-что, что проскользнуло в выпуск 7.0 IPython.

Матиас Буссонье предложил использовать C-o (то есть Control o) в качестве меры стоп-пробела.C-o открывает новые пустые строки под текущей строкой, которые вы можете открыть и отредактировать с помощью клавиш со стрелками - это не очень удовлетворительное решение, но пока нет другого решения (кроме, конечно, понижения IPython до 6.x).

В заключение, используйте C-o, чтобы открывать новые строки и ждать исправления ошибки или перейти на IPython 6.x.


Дополнительная информация

Карлос Кордоба , один из сопровождающих Spyder, в комментарии на мой ответ говорит, что на эту ошибку также влияет qtconsole...

Более того, ошибка, исправленная в оболочке IPython 7.1, по-прежнему присутствует в той же версии qtconsole и упомянутой мере стоп-пробела (Ctrl-o, чтобы открыть строку нижетекущий) не работает в qtconsole.

...