Skip to content

Latest commit

 

History

History
69 lines (51 loc) · 3.58 KB

README.ch.md

File metadata and controls

69 lines (51 loc) · 3.58 KB

Jupyter Notebook的TabNine自动补全插件

jupyter-tabnine

Read this in other languages: English, 中文

Jupyter Notebook上基于TabNine的自动补全插件,实现基于深度学习的代码自动补全功能。

其他TabNine插件的实现版本通过在client端启动一个TabNine子进程,并通过管道读写来和TabNine子进程通信。这在Jupyter Notebook上是没法直接实现的, 因为Jupyter Notebook客户端插件不支持安装第三方库,原有的库又不支持启动子进程。

本项目通过分别实现一个Jupyter Notebook插件和一个Jupyter Server插件来解决这个问题。客户端和服务器通过HTTP来通信。 基于JavaScript的客户端插件根据文件内容构造请求数据,并向Server插件发送请求。基于Python的server插件在初始化时启动一个子进程来执行TabNine二进制文件, 在收到客户端请求后,将请求通过管道发送给TabNine并将TabNine的返回结果发送给客户端。客户端收到结果后解析生成HTML组件并响应键盘事件。

安装

整个安装步骤分为:安装python包、安装客户端插件和enable客户端、服务器插件,所有安装步骤都可以通过pipjupyter命令完成。

1. 安装python包(以下任选其一)

  • 从github repo 安装: pip3 install https://github.com/wenmin-wu/jupyter-tabnine/archive/master.zip [--user][--upgrade]
  • 或者 从pypi 安装: pip3 install jupyter-tabnine [--user][--upgrade]
  • 或者 从源码安装:
    git clone https://github.com/wenmin-wu/jupyter-tabnine.git
    python3 setup.py install

2. 安装Notebook插件

jupyter nbextension install --py jupyter_tabnine [--user|--sys-prefix|--system]

3. enable Notebook 和 Server 插件

jupyter nbextension enable --py jupyter_tabnine [--user|--sys-prefix|--system]
jupyter serverextension enable --py jupyter_tabnine [--user|--sys-prefix|--system]

如果你的Jupyter版本在4.2以前,因为--py在4.2版本以前的jupyter上没法用,所以步骤1以后操作比较tricky。你需要先找到jupyter_tabnine的安装路径, 然后手动安装。安装路径可以通过下面的命令找到:

python -c "import os.path as p; from jupyter_tabnine import __file__ as f, _jupyter_nbextension_paths as n; print(p.normpath(p.join(p.dirname(f), n()[0]['src'])))"

然后执行:

jupyter nbextension install <output source directory>
jupyter nbextension enable jupyter_tabnine/main
jupyter serverextension enable <output source directory>

<output source directory> 是第一个python命令的输出结果。

使用说明

在安装完成后,该插件自动处于激活状态,任何字母、操作符、数字键入都会trigger自动补全。

  • 有时你可能想临时查看Jupyter原来的补全结果,可以按Shift + 空格 显示原来补全Demo
  • 如果你想关掉TabNine自动补全,既可以在Notebook nbextension 的页面 disable Jupyter TabNine。也可以点击 Help 在弹框中找到 Jupyter TabNine把它点掉。
  • 远程补全服务器也是支持的。如果你想部署个Server来处理客户端插件请求,或者你们公司在Kubernetes上部署一个Server Cluter请看下面章节了解如何部署自动补全Server。

开源许可证

MIT License

部署自动补全Server (可选)

很快添加

Star 趋势

Stargazers over time