如何在Jupyter Notebook中获得自动完成功能而不使用制表符?


100

我想在笔记本中获得自动完成功能,即当我键入内容时,会出现一个下拉菜单,其中包含我可能键入的所有可能内容,而无需按Tab键。有这样的事吗?

我试过了 :

%config IPCompleter.greedy =真实

但这需要按下选项卡按钮

Answers:


91

有一个扩展名为Hinterland juterter的,在键入时会自动显示下拉菜单。还有一些其他有用的扩展。

为了安装扩展,您可以按照此github repo上的指南进行操作。要轻松激活扩展程序,您可能需要使用扩展程序配置器


3
如果我正在使用运行jupyter Notebook的远程计算机,并且通过浏览器在本地计算机上使用它,那么应该在哪里安装扩展程序?
thebeancounter

2
@thebeancounter我仅在本地安装了扩展程序,即在通过浏览器访问笔记本的计算机上。我在运行jupyter Notebook的远程计算机上未安装任何扩展程序。
physicsGuy

5
我已经安装了hinterland,它将仅自动完成基本的python内容,而不会自动完成模块功能(例如pd,np等),如何使其自动完成那些功能,例如pycharm?
thebeancounter

@thebeancounter对我而言,内陆使用numpy和pandas之类的模块。即使我进行了相对导入import numpy as np和输入np,也会显示建议(例如np.abs)。要解决此问题,需要有关安装的更多详细信息。我建议为您的问题另开一个问题。
physicsGuy

2
对于像我这样不熟悉Jupyter Notebook的用户,1)按照官方说明安装这些东西:jupyter-contrib-nbextensions.readthedocs.io/en/latest/…2)安装浏览器配置程序UI,如下:github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3)在终端中使用命令打开jupyter笔记本:jupyter notebook
Jason

33

即使使用了腹地扩展,使用Jupyter Notebook的自动完成功能也是如此弱。感谢您提供基于深度学习的代码自动完成的想法。我开发了基于TabNine的Jupyter Notebook扩展,该扩展提供了基于深度学习的代码自动完成功能。这是我的工作的Github链接:jupyter-tabnine

现在可以在pypi索引上使用。只需发出以下命令,然后使用它即可:)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

演示


很棒!但是它杀死了我的新行(Shift + Enter)在Jupyter Notebook中不再起作用。有什么解决方法吗?
哈维

@Harvey嗨,我首先禁止做错操作Enter。如果显示了提示窗口,则第一个Enter将触发窗口的关闭。现在,如果要在显示提示时换行,可以先发出Enter然后再发出Enter(如果要执行当前单元格并创建一个新单元,则可以Shift+ Enter。)我不确定这是否是一个好的设计。让我知道您的想法和建议。
吴文敏

在我的笔记本电脑键盘上,“ fn” +“ Enter”可正常工作。我正在习惯。预期的行为是Alt + Enter用于单元格中的新行,而Shift + Enter用于执行。无论如何,考虑这个插件的实用性只是小事。谢谢!
哈维

万一Permission denied尝试为jupyter安装时可能出现错误,只需--user使用jupyter install命令添加即可。
元头

1
这也是一种警告:TabNine会占用大量内存和CPU资源。就我而言,我从WSL(Ubuntu 18.04)运行jupyter笔记本,TabNine占用约1.5GB内存。如果您从任务管理器中结束任务,则使用的内存可能会减少到200MB,TabNine会在您下次输入jupyter笔记本时自动自动启动。更多详细信息,请访问github.com/zxqfl/TabNine/issues/43
元头

11

如上面@physicsGuy所述,您可以使用内地扩展名。简单的步骤即可。

使用conda forge频道安装nbextension。只需在conda终端中运行以下命令:

conda install -c conda-forge jupyter_nbextensions_configurator

下一步启用腹地扩展。在conda终端中运行以下命令:

jupyter nbextension enable hinterland/hinterland

就这样,完成了。


5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterland这是这样做的错误
Darshu Bc

运行这两个命令jupyter contrib nbextension install --systemjupyter contrib nbextension install --user然后查看列表jupyter nbextension list
PiotrK

8

这样%config IPCompleter.greedy=True导入诸如numpy或pandas之类的软件包后,无需执行此操作; import numpy as np import pandas as pd

然后输入,pd.然后点击选项卡按钮,它会弹出所有可能的方法,以非常简单直接地使用。


7

我正在使用Jupiter Notebook 5.6.0。在这里,要获得自动提示,我只需输入至少一个字符后按Tab键即可。

 **Example:** Enter character `p` and hit Tab.

要在导入的库中获取方法和属性,请使用与Alice相同的Tab键

  import numpy as np

  np. --> Hit Tab key

1

将以下内容添加到Jupyter Lab的键盘用户首选项中(设置->高级系统编辑器)

{
    "shortcuts":[
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-notebook",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
        }

    ]
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.