【问题标题】:How to get autocomplete in jupyter notebook without using tab?如何在不使用标签的情况下在 jupyter notebook 中获得自动完成功能?
【发布时间】:2018-01-05 12:24:30
【问题描述】:

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

我试过了:

%config IPCompleter.greedy=True

但这需要按下标签按钮

【问题讨论】:

    标签: python jupyter-notebook


    【解决方案1】:

    我建议hinterland 扩展。

    在其他答案中我找不到如何从 pip 安装它的方法,所以这就是您的安装方式。

    首先,通过运行安装 jupyter contrib nbextensions

    pip install jupyter_contrib_nbextensions

    接下来通过运行为jupyter安装js和css文件

    jupyter contrib nbextension install --user

    在最后运行,

    jupyter nbextension enable hinterland/hinterland

    最后一条命令的输出将是

    Enabling notebook extension hinterland/hinterland...
          - Validating: OK
    

    【讨论】:

      【解决方案2】:

      将以下内容添加到 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"
              }
      
          ]
      }
      

      【讨论】:

      • 注意:这个问题是关于 jupyter notebook 的。对于 JupyterLab,在您的回答之前创建了 another question,您的回答可能更适合那里。虽然我必须说这不是我所期望的答案,但它在技术上是正确的——这里没有使用标签;)
      【解决方案3】:

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

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

      【讨论】:

      • 如果我使用的是运行 jupyter notebook 的远程机器,并且我通过浏览器在本地机器上使用它,我应该在哪里安装扩展程序?
      • @thebeancounter 我只在本地安装了扩展,也就是在我通过浏览器访问笔记本的机器上。我没有在运行 jupyter notebook 的远程计算机上安装任何扩展。
      • 我已经安装了hinterland,它只会自动完成基本的python内容,但不会自动完成模块功能(例如pd,np等)我怎样才能让它像pycharm一样自动完成?
      • @thebeancounter 对我来说,腹地可以使用 numpy 和 pandas 等模块。即使我执行相对导入 import numpy as np 并输入 np,也会出现建议(例如 np.abs)。要解决此问题,需要有关您的设置的更多详细信息。我建议为您的问题打开一个单独的问题。
      • 对于像我这样不熟悉 Jupyter Notebook 的人,1) 按照官方说明安装这些东西:jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) 安装浏览器配置器 UI,如下:github.com/Jupyter-contrib/jupyter_nbextensions_configurator 3) 打开jupyter notebook 在终端中使用命令:jupyter notebook
      【解决方案4】:

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

      现在在pypi index 上可用。只需发出以下命令,然后享受它:)

      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 用于执行。不管怎样,考虑到这个插件有多么有用,这只是一件小事。谢谢!
      • 如果在尝试安装 jupyter 时出现Permission denied 错误,只需在 jupyter install 命令中添加--user
      • 还有一个警告:TabNine 会占用大量的内存和 CPU 资源。就我而言,我从 WSL(Ubuntu 18.04)运行 jupyter notebook,而 TabNine 占用了 ~1.5GB 内存。如果您从任务管理器结束任务,使用的内存可能会下降到 ~200MB,并且 TabNine 将在您下次输入 jupyter 笔记本时自动启动。更多详情请访问github.com/zxqfl/TabNine/issues/43
      【解决方案5】:

      正如上面@physicsGuy 所提到的,您可以使用腹地扩展。简单的步骤来做到这一点。

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

      conda install -c conda-forge jupyter_nbextensions_configurator
      

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

      jupyter nbextension enable hinterland/hinterland
      

      就是这样,完成。

      【讨论】:

      • Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterland 这是这样做的错误
      • 运行这两个命令jupyter contrib nbextension install --systemjupyter contrib nbextension install --user 然后这个查看列表jupyter nbextension list
      【解决方案6】:

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

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

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

        import numpy as np
      
        np. --> Hit Tab key
      

      【讨论】:

        【解决方案7】:

        不这样做%config IPCompleter.greedy=True在你以这种方式导入像numpy或pandas这样的包之后; import numpy as np import pandas as pd.

        然后输入pd.,然后点击标签按钮,它会显示所有可能的方法,使用起来非常简单直接。

        【讨论】:

          猜你喜欢
          • 2020-09-03
          • 1970-01-01
          • 2021-02-17
          • 2020-07-23
          • 2017-01-03
          • 2012-10-15
          • 2012-09-22
          • 2019-10-05
          • 1970-01-01
          相关资源
          最近更新 更多