似乎(在我的系统上;YMMV)是一个acknowledged bug,其中 pydev 没有更新以匹配从 ipython 版本 4 到版本 5 的 API 更改。
要么做
pip uninstall ipython
pip install ipython==4.2.0
(在this answer 中暗示),或者将以下补丁应用于pydev_ipython_console_011.py。
163c163
< self.has_readline)
---
> )
171d170
< use_readline=self.has_readline,
183d181
< use_readline=self.has_readline,
194d191
< use_readline=self.has_readline,
239,245d235
<
< # Only configure readline if we truly are using readline. IPython can
< # do tab-completion over the network, in GUIs, etc, where readline
< # itself may be absent
< if self.has_readline:
< self.set_readline_completer()
<
卸载 traitlets 允许我在 Eclipse 中打开 pydev 控制台,但在命令行中破坏了 ipython,所以我重新安装了它。但是,由于错误消息提到某些进程正在以退出代码 1 终止,我认为可能有一个值得一看的抑制回溯。所以,我运行了上面提到的命令行
/usr/bin/python2.7 -u /home/tsbertalan/eclipse/cpp-mars/eclipse/../../../.p2/pool/plugins/org.python.pydev_4.5.4.201601292234/pysrc/pydevconsole.py 34462 35898 34462 35898
(这显然取决于我的具体安装),并得到一个以
结尾的回溯
File "/home/tsbertalan/.p2/pool/plugins/org.python.pydev_4.5.4.201601292234/pysrc/_pydev_bundle/pydev_ipython_console_011.py", line 194, in _new_completer_200
use_readline=self.has_readline,
AttributeError: 'PyDevTerminalInteractiveShell' object has no attribute 'has_readline'
当我用谷歌搜索最后一行时,我被引导到this answer,这是由于 ipython v5 中的 API 发生了变化。所以,这是 pydev 中的一个错误。然后我检查了他们的问题跟踪器,发现它是already handled,解决方法是删除有问题的旧 API 详细信息(请参阅上面的补丁)。
不幸的是,patch 方法仅适用于 pydev 4.5.4。当我使用 Eclipse 的“检查更新”功能进行升级时(希望 5.1.3 可用——只有 5.1.2 可用),补丁解决了即时失败,因为交互式控制台使用 ipython 启动,但使用 @987654330 @ 打印文档字符串,而不是打印某种类似字典的对象。所以,我现在使用 pydev 5.1.2 和 ipython 4.2.0。也许一旦我得到 5.1.3,我会尝试更新 ipython。