TAB完成在Jupyter Notebook中不起作用,但在iPython终端中很好

时间:2015-11-12 05:32:25

标签: ipython-notebook readline jupyter tab-completion ubuntu-15.10

TAB完成在iPython终端中运行良好,但在Firefox浏览器中不行。

到目前为止,我曾尝试但失败了,

1)。运行命令$ sudo easy_install readline

然后.egg文件写在/usr/local/lib/python2.7/dist-packages/readline-6.2.4.1-py2.7-linux-x86_64.egg,

但是TAB完成仍然无法在Jupyter Notebook中使用。

2)。还试图找到找到ipython_notebook_config.py or ipython_config.py,但失败了。

我使用的是Python 3.5和iPython 4.0.0。并且都安装在Ubuntu 15.10 /usr/share/anaconda3/bin/ipython

任何帮助将不胜感激!

18 个答案:

答案 0 :(得分:99)

这是一个已知问题,而绝地就是问题所在。尝试执行:

<块引用>

pip3 install jedi==0.17.2

https://github.com/jupyter/notebook/issues/2435

答案 1 :(得分:30)

我的问题在于我尝试在同一个单元格中调用自动完成并导入。 由于导入的东西尚未初始化,因此自动完成功能不起作用。

我需要的是调用新单元格中的对象 enter image description here

UPD:或者只是在同一个单元格中运行一次程序来初始化导入的

答案 2 :(得分:18)

我刚刚安装了最新的 JEDI,然后帮我解决了这个问题,这是使用 Anaconda 时的命令:

conda install -c anaconda jedi

或者您可能需要尝试此操作,将这一行复制到您的 jupyter notebook 顶部:

%config Completer.use_jedi = False

答案 3 :(得分:14)

%config Completer.use_jedi = False

此命令有帮助,但我们需要一次又一次地将其添加到所有笔记本中。

答案 4 :(得分:4)

我遇到了类似的问题,很遗憾无法对帖子发表评论,因此我在这里添加了一个对我有用的简单解决方案。我使用 conda 并且 conda list 显示我正在运行 jedi-0.18.0。我使用了命令 conda install jedi==0.17.2。这很快解决了我的 conda 环境的问题。

附加说明:我通常使用 jupyter-lab,并没有看到生成的错误消息。通过切换到 jupyter notebook,我看到了以下错误:

<块引用>

[IPKernelApp] 错误 |消息处理程序中的异常:回溯(大多数 最近通话最后一次):文件 "D:\apps\miniconda\envs\pydata-book\lib\site-packages\ipykernel\kernelbase.py", 第 265 行,在 dispatch_shell 中 产量 gen.maybe_future(handler(stream, idents, msg)) 文件“D:\apps\miniconda\envs\pydata-book\lib\site-packages\tornado\gen.py”, 第 762 行,运行中 value = future.result() 文件 "D:\apps\miniconda\envs\pydata-book\lib\site-packages\tornado\gen.py", 第 234 行,在包装器中 yielded = ctx_run(next, result) File "D:\apps\miniconda\envs\pydata-book\lib\site-packages\ipykernel\kernelbase.py", 第 580 行,在 complete_request 中 匹配 = 产量 gen.maybe_future(self.do_complete(code, cursor_pos)) 文件 "D:\apps\miniconda\envs\pydata-book\lib\site-packages\ipykernel\ipkernel.py", 第 356 行,在 do_complete 中 return self._experimental_do_complete(code, cursor_pos) File "D:\apps\miniconda\envs\pydata-book\lib\site-packages\ipykernel\ipkernel.py", 第 381 行,在 _experimental_do_complete 中 完成 = 列表(_rectify_completions(代码,raw_completions))文件 "D:\apps\miniconda\envs\pydata-book\lib\site-packages\IPython\core\completer.py", 第 484 行,在 rectify_completions 完成 = 列表(完成)文件“D:\apps\miniconda\envs\pydata-book\lib\site-packages\IPython\core\completer.py”, 1815 号线,竣工 for c in self._completions(text, offset, _timeout=self.jedi_compute_type_timeout/1000): File "D:\apps\miniconda\envs\pydata-book\lib\site-packages\IPython \core\completer.py", 第 1858 行,在 _completions 匹配文本,匹配,匹配来源,绝地匹配 = self._complete(文件 "D:\apps\miniconda\envs\pydata-book\lib\site-packages\IPython\core\completer.py", 第 2026 行,在 _complete 中 completions = self._jedi_matches( 文件“D:\apps\miniconda\envs\pydata-book\lib\site-packages\IPython\core\completer.py”, 第 1369 行,在 jedi_matches 中 interpreter = jedi.Interpreter( 文件“D:\apps\miniconda\envs\pydata-book\lib\site-packages\jedi\api_init. py", 第 725 行,在 init 中 super().init(code, environment=environment, TypeError: init() 得到一个意外的关键字参数 'column'

我强调了几条绝地消息,但这一切都表明这是与安装的绝地版本相关的问题。

答案 5 :(得分:3)

就我而言,在运行pip install pyreadline之后,我需要在完成工作之前重新执行Jupyter中的所有行。我一直想知道为什么它适用于IPython但不适用于Jupyter。

答案 6 :(得分:3)

在我的情况下,我在Debian Linux上安装了miniconda,并且很可能在Debian附带的之前的Python中遇到了问题。以下几行解决了我的问题:

conda update conda
conda update --all

解决方案取自here,基于我在编写np.<tab>后在终端中的IPython中出现的错误:

No such file or directory: '/home/user/miniconda3/lib/python' 

答案 7 :(得分:2)

以上 Sagnik 的回答(2020 年 12 月 20 日)适用于我在 Windows 10 上的情况。

pip3 安装绝地==0.17.2

[抱歉,我将此作为答案而不是评论发布。我还没有发表评论的权限。 ]

答案 8 :(得分:1)

我遇到了同样的问题,已使用

解决
conda install -c anaconda jedi

答案 9 :(得分:0)

F.wo.huang对OP的评论在我的anaconda环境中对我有用:

condo update readline

答案 10 :(得分:0)

创建一个新的env变量有助于解决此问题。

使用environments.txt中的.conda内容作为路径。

答案 11 :(得分:0)

使用迷你康达时,我遇到了同样的问题, 我改用anaconda,看来已经解决了问题。 PS。我已经尝试了在网上可以找到的所有内容,但是除了切换到Anaconda之外,没有其他解决方法。

答案 12 :(得分:0)

我找到的解决此问题的最佳方法是创建一个新的环境。如果您使用的是Anaconda,则只需创建一个新环境即可解决该问题。当然,您必须重新安装一些库,但这一切都值得。

答案 13 :(得分:0)

面对同样的问题,对我来说,以下方法可行

conda install -c anaconda jedi

答案 14 :(得分:0)

您可以添加

  

%config IPCompleter.greedy =真

在Jupyter笔记本的第一个框中。

答案 15 :(得分:0)

正如五年前提出的问题,当时的答案可能有所不同......但如果今天有人在谷歌上搜索,我想加上我的两分钱:用户 Sagnik 和以上用户的答案对我有用。

要补充的一点是,如果运行 anaconda,你可以做我所做的:简单

  • 启动 anaconda-navigator 软件,
  • 在我的环境中找到绝地软件包,
  • 点击绝地右侧的小复选框
  • 在“标记为特定版本安装”下,选择 0.17.2

重新启动内核后一切正常:)

答案 16 :(得分:0)

试试下面讨论的命令 here

pip install -U ipython==7.20

答案 17 :(得分:0)

我在 windows pc 的 conda 虚拟环境下遇到了同样的问题,将 jedi 降级到 0.17.2 版本为我解决了这个问题。

conda 安装绝地==0.17.2