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 の両方で機能するはずです。
方法 1: モジュールとして簡単にインストールする
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
方法 2: 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 で確実に動作します。
方法 1: モジュールとして簡単にインストールする
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
方法 2: 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 内で gophernote をダウンロードし、コンパイルしてインストールします。
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
%APPDATA%jupyterkernelsgophernoteskernel.json
gophernotes.exe (通常は %GOPATH%bin にある) へのフルパスで更新します。例えば:
{
"argv": [
"C:\gopath\bin\gophernotes.exe",
"{connection_file}"
],
"display_name": "Go",
"language": "go",
"name": "go"
}
Docker を使用して何もインストールしなくても、Jupyter + gophernotes を試したり実行したりできます。標準ライブラリの内容のみを必要とする Go ノートブックを実行するには、次を実行します。
docker run -it -p 8888:8888 gopherdata/gophernotes
または、一般的な Go データ サイエンス パッケージ (gonum、gota、golearn など) にアクセスできる Go ノートブックを実行するには、次のコマンドを実行します。
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
を選択します。
楽しむ!
インタラクトを起動します。
対話メニューから「言語」→「移動」を選択します。
楽しむ!
Go コードに加えて、次の特別なコマンドもサポートされています。これらは単独の行に存在する必要があります。
gophernotes は内部で gomacro を使用して、Go コードを対話的に評価します。 gomacro を使用すると、ほとんどの Go コードを評価できますが、いくつかの制限があり、それについてはここで詳しく説明します。最も注目すべき点は、gophernotes が以下をサポートしていないことです。
plugin
パッケージの現在の制限です。また、新しい名前付き型の作成がエミュレートされ、そのメソッドは解釈されたコードにのみ表示されます。
環境によっては、 gophernotes 実行可能~/.local/share/jupyter/kernels/gophernotes
にコピーする前に、 kernel/kernel.json
内の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