IPython 7.0.1

时间:2018-10-12 08:40:10

标签: python shell ipython

我在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.

1 个答案:

答案 0 :(得分:6)

这是known bug(另请参见this)。

从我提到的问题中可以明显看出,这不是Anaconda发行版的错误,而是IPython 7.0发行版中的错误。

Matthias Bussonier建议使用C-o(即Control o)作为止损措施。 C-o在当前行下方打开新的空白行,您可以使用箭头键到达并进行编辑-这不是一个令人满意的解决方案,但是目前没有其他解决方案(当然,除了将IPython降级为6.x之外) )。

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


其他信息

Carlos Cordoba是Spyder的一名维护者,在a commentan answer of mine中说,qtconsole也受此错误的影响...

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