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