最近总是接触各种 Jupyter…(JupyterLab/JupyterHub),发现居然还有可以完全跑在浏览器上的 Jupyterlite,那是不是可以直接放一个到这儿呢?
大致的概念
原来的 Jupyter 是传统的 CS 模式,各种语言(e.g. python)的 kernel 是跑在服务端的
但现在也有了 python(和一些常用的库)的 WebAssembly 移植版(e.g. pyodide), 这样一来 kernel 也可以在浏览器上实现了 (e.g. pyolite), 因此可以创建一个全静态的 site,UI 和 kernel 都在浏览器中运行, 中间用 mock-socket 假装通讯, 完整地把 notebook 那一套 CS 模式移植过来
部署
2023-04-07 更新
目前 jupyterlite 已经发布 0.1.0 版本,部署到 gthub page 已十分简单,基本上就是 clone 一个 template repo 即可,见这里
内容
在 repo 里有一个 content 目录,把内容(例如 ipynb 文件)放入该目录即可
另外发现 https://github.com/jupyterlab-contrib/jupyterlab-open-url-parameter 安装了该 extension 后允许在 url 参数中直接指定内容的地址, 例如访问
https://your-name.github.io/jupyterlite/lab/?fromURL=/path/to/your.ipynb
则打开的 jupyterlite 会自动打开该 notebook
使用
不同之处
原 CS 模式下,packages 是在服务器上安装好,可以直接 import
,而在 jupyterlite 中,似乎除
pyodide 自带的那些包外, 需要首先 piplite.install
才能 import
,例如:
import pyjokes
pyjokes.get_joke()
这是会失败的
import piplite
await piplite.install('pyjokes')
import pyjokes
pyjokes.get_joke()
这样才行,看看效果