gophernotes
是用于 Jupyter 笔记本和 nteract 的 Go 内核。它允许您在基于浏览器的笔记本或桌面应用程序中交互地使用 Go。使用gophernotes
创建和共享包含实时 Go 代码、方程、可视化和说明文本的文档。这些带有实时 Go 代码的笔记本可以通过电子邮件、Dropbox、GitHub 和 Jupyter Notebook Viewer 与其他人共享。使用 Go 笔记本继续进行数据科学或其他有趣的事情!
致谢- 该项目在底层使用了一个名为 gomacro 的 Go 解释器来交互式地评估 Go 代码。 gophernotes 徽标由才华横溢的 Marcus Olsson 设计,灵感来自 Renee French 最初的 Go Gopher 设计。
go install
Go 二进制文件)。下面的说明应该适用于 Linux 和 FreeBSD。
方法一:以模块方式快速安装
go install github.com/gopherdata/[email protected]
mkdir -p ~ /.local/share/jupyter/kernels/gophernotes
cd ~ /.local/share/jupyter/kernels/gophernotes
cp " $( go env GOPATH ) " /pkg/mod/github.com/gopherdata/[email protected]/kernel/ * " . "
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed " s|gophernotes| $( go env GOPATH ) /bin/gophernotes| " < kernel.json.in > kernel.json
方法二:从GOPATH手动安装
mkdir -p " $( go env GOPATH ) " /src/github.com/gopherdata
cd " $( go env GOPATH ) " /src/github.com/gopherdata
git clone https://github.com/gopherdata/gophernotes
cd gophernotes
git checkout -f v0.7.5
go install
mkdir -p ~ /.local/share/jupyter/kernels/gophernotes
cp kernel/ * ~ /.local/share/jupyter/kernels/gophernotes
cd ~ /.local/share/jupyter/kernels/gophernotes
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed " s|gophernotes| $( go env GOPATH ) /bin/gophernotes| " < kernel.json.in > kernel.json
要确认gophernotes
二进制文件已安装在 GOPATH 中,请直接执行:
" $( go env GOPATH ) " /bin/gophernotes
您应该看到以下内容:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
注意- 如果您设置了JUPYTER_PATH
环境变量或者您使用的是旧版本的 Jupyter,您可能需要将此内核配置复制到另一个目录。您可以通过执行以下命令来检查将搜索哪些目录:
jupyter --data-dir
重要提示- gomacro 在导入第三方库时依赖于plugin
包。只要您从不执行命令strip gophernotes
,这个包就可以在带有 Go 1.10.2+ 的 Mac OS X 上可靠地工作。
方法一:以模块方式快速安装
go install github.com/gopherdata/[email protected]
mkdir -p ~ /Library/Jupyter/kernels/gophernotes
cd ~ /Library/Jupyter/kernels/gophernotes
cp " $( go env GOPATH ) " /pkg/mod/github.com/gopherdata/[email protected]/kernel/ * " . "
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed " s|gophernotes| $( go env GOPATH ) /bin/gophernotes| " < kernel.json.in > kernel.json
方法二:从GOPATH手动安装
mkdir -p " $( go env GOPATH ) " /src/github.com/gopherdata
cd " $( go env GOPATH ) " /src/github.com/gopherdata
git clone https://github.com/gopherdata/gophernotes
cd gophernotes
git checkout -f v0.7.5
go install
mkdir -p ~ /Library/Jupyter/kernels/gophernotes
cp kernel/ * ~ /Library/Jupyter/kernels/gophernotes
cd ~ /Library/Jupyter/kernels/gophernotes
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed " s|gophernotes| $( go env GOPATH ) /bin/gophernotes| " < kernel.json.in > kernel.json
要确认gophernotes
二进制文件已安装在 GOPATH 中,请直接执行:
" $( go env GOPATH ) " /bin/gophernotes
您应该看到以下内容:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
注意- 如果您设置了JUPYTER_PATH
环境变量或者您使用的是旧版本的 Jupyter,您可能需要将此内核配置复制到另一个目录。您可以通过执行以下命令来检查将搜索哪些目录:
jupyter --data-dir
重要提示- gomacro 在导入第三方库时依赖于plugin
包。目前仅 Linux 和 Mac OS X 支持此软件包。因此,如果您需要在 Go 笔记本中使用第三方软件包并且您在 Windows 上运行,则应该使用 Docker 安装并在 Docker 中运行 gophernotes/Jupyter。
在GOPATH中下载gophernotes,编译并安装
go env GOPATH > temp.txt
set /p GOPATH=<temp.txt
mkdir %GOPATH%srcgithub.comgopherdata
cd /d %GOPATH%srcgithub.comgopherdata
git clone https://github.com/gopherdata/gophernotes
cd gophernotes
git checkout -f v0.7.5
go install
复制内核配置:
mkdir %APPDATA%jupyterkernelsgophernotes
xcopy %GOPATH%srcgithub.comgopherdatagophernoteskernel %APPDATA%jupyterkernelsgophernotes /s
请注意,如果您设置了JUPYTER_PATH
环境变量或者使用旧版本的 Jupyter,则可能需要将此内核配置复制到另一个目录。您可以通过执行以下命令来检查将搜索哪些目录:
jupyter --data-dir
使用 gophernotes.exe 的完整路径(通常位于 %GOPATH%bin 中)更新%APPDATA%jupyterkernelsgophernoteskernel.json
。例如:
{
"argv": [
"C:\gopath\bin\gophernotes.exe",
"{connection_file}"
],
"display_name": "Go",
"language": "go",
"name": "go"
}
您可以尝试或运行 Jupyter + gophernotes,而无需使用 Docker 安装任何内容。要运行仅需要标准库中的内容的 Go 笔记本,请运行:
docker run -it -p 8888:8888 gopherdata/gophernotes
或者要运行可访问常见 Go 数据科学包(gonum、gota、golearn 等)的 Go Notebook,请运行:
docker run -it -p 8888:8888 gopherdata/gophernotes:latest-ds
无论哪种情况,运行此命令都应该输出一个链接,您可以通过该链接在浏览器中访问 Jupyter。此外,要将笔记本保存到 Docker 映像之外的位置和/或从 Docker 映像外部的位置加载笔记本,您应该使用卷挂载。例如:
docker run -it -p 8888:8888 -v /path/to/local/notebooks:/path/to/notebooks/in/docker gopherdata/gophernotes
如果您完成了上述本地安装之一(即不是 Docker 安装),请启动 jupyter 笔记本服务器:
jupyter notebook
从New
下拉菜单中选择Go
。
玩得开心!
启动互动。
从 nteract 菜单中选择语言 -> Go。
玩得开心!
除了 Go 代码之外,还支持以下特殊命令 - 它们必须单独占一行:
gophernotes 在底层使用 gomacro 来交互式地评估 Go 代码。您可以使用 gomacro 评估大多数 Go 代码,但也有一些限制,这些限制将在此处进一步详细讨论。最值得注意的是,gophernotes 不支持:
plugin
包的当前限制。此外,还会模拟新命名类型的创建,并且它们的方法仅对解释代码可见。
根据您的环境,您可能需要手动更改kernel/kernel.json
中gophernotes
可执行文件的路径,然后再将其复制到~/.local/share/jupyter/kernels/gophernotes
。您可以在此处放置gophernotes
可执行文件的完整路径,这样就不会有任何其他问题了。
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/notebook/base/handlers.py", line 458, in wrapper
result = yield gen.maybe_future(method(self, *args, **kwargs))
File "/usr/local/lib/python2.7/site-packages/tornado/gen.py", line 1008, in run
value = future.result()
...
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
如果 jupyter 已经在运行,请停止它。
从 gophernotes 可执行文件的路径添加到/go/bin/gophernotes
的符号链接。如果您按照上述说明进行操作,则结果将是:
sudo ln -s $HOME/go/bin/gophernotes /go/bin/gophernotes
重新启动 jupyter,您现在应该可以启动并运行了。
乍一看,这似乎是支持 Go 模块的新导入机制的限制。您可以使用命令%go111module off
切换旧的(非模块感知)机制
要重新启用模块支持,请执行%go111module on
要查看 Jupyter 笔记本的日志,请使用 --log-level 选项
jupyter notebook --log-level DEBUG