IPython 7.0.1 中的多行编辑中断



我在zsh shell中使用IPython,我在定义多行函数时遇到问题。

例如,在原始的 Python shell 中,我可以定义一个函数 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.

这是一个已知的错误(另请参阅此错误(。

从我提到的问题中可以清楚地看出,这不是 Anaconda 发行版的错误,而是滑入 IPython 7.0 版本的东西。

Matthias Bussonier建议使用C-o(即控制o(作为权宜之计。C-o当前行下方打开新的空白行,您可以使用箭头键访问和编辑 - 这不是一个非常令人满意的解决方案,但现在没有其他解决方案(当然,除了将IPython降级到6.x(。

最后,使用C-o打开新行并等待错误修复或降级到 IPython 6.x。


附加信息

Spyder维护者之一卡洛斯·科尔多瓦(Carlos Cordoba(在对我的回答的评论中说,qtconsole也受到此错误的影响......

此外,在IPython 7.1 shell 中修复的错误仍然存在于同一版本的qtconsole中,我提到的权宜之计(Ctrl-o在当前下方打开一行(在qtconsole中不起作用。

最新更新