Skip to content

Jupyter Notebook with Go kernel 系列二

· 3 min
TL;DR

Jupyter Notebook with go kernel 后续

本文记录了作者从 gophernotes 切换到 GoNB 作为 Jupyter Notebook 的 Go 内核的经验,详细比较了两种实现方案的优缺点。文章首先探讨了在 Windows 系统下使用 gophernotes 遇到的问题,以及尝试通过 Docker 解决的过程;然后介绍了 GoNB 的安装和使用方法,并通过实际示例展示了 GoNB 优秀的代码执行、可视化和交互能力。对于希望在 Jupyter 环境中使用 Go 语言的开发者,本文提供了实用的工具选择和配置指南。

前面提到过,我使用了 gophernotes 作为 Jupyter notebook 的 go kernel 实现本地自己的 “go playground”, 但是这个对于在 Windows 上使用并不是足够完善。我在使用时确实碰到一些问题,看了一下官方社区,他们推荐在 Windows 上使用 Docker 部署。于是我又在本地试了一下。

首先发现我的 Windows 上没了 Docker,不知道什么时候删除了 :( 那么就先安装吧。这个很简单:

Terminal window
choco install docker -y

不对,是要桌面版:

Terminal window
choco install docker-desktop -y

安装完毕!

gophernotes#

安装

Terminal window
docker run -it -p 8888:8888 gopherdata/gophernotes

加了 latest-ds 后里面安装了 go 数据科学包,如 gonum, gota, golearn, etc

Terminal window
docker run -it -p 8888:8888 -v /path/to/local/notebooks:/path/to/notebooks/in/docker gopherdata/gophernotes:latest-ds

但是这里我还发现一点不方便,使用这个镜像安装有一个缺点,就是在运行 notebooks 时有些包导入失败,因为下载的 Docker 镜像中没有安装相应的包。试了下进入 Docker 镜像内部,想着手动安装吧,结果里面连包管理命令都缺失。所以就放弃,折腾下去的话不知道还会有什么问题。 所以呢,还是回到本地安装的环境中来。 用了 Docker 结果还是心塞,当初选 gophernotes 是有点随便了。所以呢,我想换 Go kernel 了。

再次认真看了下这个列表:image.png 发现除了 gophernotes, gonb 这两个,基本上其它的都不行。所以现在只能试下 gonb 了。

GoNB#

这次不想整环境问题了,直接上 Docker 容器:

安装

Terminal window
docker pull janpfeifer/gonb_jupyterlab:latest
docker run -it --rm -p 8888:8888 -v "${PWD}":/notebooks/host janpfeifer/gonb_jupyterlab:latest

使用

先照着 tutirial 文档把所有的例子都运行一遍,发现这个 go kernel 真 NB。

下面是总结的一些我觉得有用的使用方法: 不过也可以直接看原文档:tutorial。 但是呢原文档是 .ipynb 格式的,而且比较长,我只摘取部分内容作为说明,并且是在 notebook 中演示:

这个渲染效果来自:nbviewer

结论就是:gonb 是比 gophernotes 更好的用于 Jupyter notebook 的 go kernel。