gophernotes
ist ein Go-Kernel für Jupyter-Notebooks und Nteract. Damit können Sie Go interaktiv in einem browserbasierten Notebook oder einer Desktop-App verwenden. Verwenden Sie gophernotes
um Dokumente zu erstellen und zu teilen, die Live-Go-Code, Gleichungen, Visualisierungen und erklärenden Text enthalten. Diese Notizbücher können dann mit dem Live-Go-Code per E-Mail, Dropbox, GitHub und dem Jupyter Notebook Viewer mit anderen geteilt werden. Machen Sie mit Go-Notizbüchern Datenwissenschaft oder etwas anderes Interessantes!
Danksagungen – Dieses Projekt nutzt unter der Haube einen Go-Interpreter namens Gomacro, um Go-Code interaktiv auszuwerten. Das Gophernotes-Logo wurde vom brillanten Marcus Olsson entworfen und vom ursprünglichen Go Gopher-Design von Renee French inspiriert.
go install
).Die folgenden Anweisungen sollten sowohl unter Linux als auch unter FreeBSD funktionieren.
Methode 1: Schnellinstallation als Modul
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
Methode 2: manuelle Installation von 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
Um zu bestätigen, dass die gophernotes
Binärdatei in GOPATH installiert ist, führen Sie sie direkt aus:
" $( go env GOPATH ) " /bin/gophernotes
und Sie sollten Folgendes sehen:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
Hinweis : Wenn Sie die Umgebungsvariable JUPYTER_PATH
festgelegt haben oder eine ältere Version von Jupyter verwenden, müssen Sie diese Kernelkonfiguration möglicherweise in ein anderes Verzeichnis kopieren. Sie können überprüfen, welche Verzeichnisse durchsucht werden, indem Sie Folgendes ausführen:
jupyter --data-dir
Wichtiger Hinweis : gomacro verlässt sich beim Importieren von Bibliotheken von Drittanbietern auf das plugin
-Paket. Dieses Paket funktioniert zuverlässig unter Mac OS X mit Go 1.10.2+, solange Sie niemals die strip gophernotes
ausführen.
Methode 1: Schnellinstallation als Modul
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
Methode 2: manuelle Installation von 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
Um zu bestätigen, dass die gophernotes
Binärdatei in GOPATH installiert ist, führen Sie sie direkt aus:
" $( go env GOPATH ) " /bin/gophernotes
und Sie sollten Folgendes sehen:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
Hinweis : Wenn Sie die Umgebungsvariable JUPYTER_PATH
festgelegt haben oder eine ältere Version von Jupyter verwenden, müssen Sie diese Kernelkonfiguration möglicherweise in ein anderes Verzeichnis kopieren. Sie können überprüfen, welche Verzeichnisse durchsucht werden, indem Sie Folgendes ausführen:
jupyter --data-dir
Wichtiger Hinweis : gomacro verlässt sich beim Importieren von Bibliotheken von Drittanbietern auf das plugin
-Paket. Dieses Paket wird derzeit nur unter Linux und Mac OS X unterstützt. Wenn Sie also in Ihren Go-Notebooks Pakete von Drittanbietern verwenden müssen und diese unter Windows ausführen, sollten Sie die Docker-Installation verwenden und gophernotes/Jupyter in Docker ausführen.
Laden Sie Gophernotes in GOPATH herunter, kompilieren und installieren Sie es
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
Kopieren Sie die Kernel-Konfiguration:
mkdir %APPDATA%jupyterkernelsgophernotes
xcopy %GOPATH%srcgithub.comgopherdatagophernoteskernel %APPDATA%jupyterkernelsgophernotes /s
Beachten Sie: Wenn Sie die Umgebungsvariable JUPYTER_PATH
festgelegt haben oder eine ältere Version von Jupyter verwenden, müssen Sie diese Kernelkonfiguration möglicherweise in ein anderes Verzeichnis kopieren. Sie können überprüfen, welche Verzeichnisse durchsucht werden, indem Sie Folgendes ausführen:
jupyter --data-dir
Aktualisieren Sie %APPDATA%jupyterkernelsgophernoteskernel.json
mit dem VOLLSTÄNDIGEN PFAD zu Ihrer gophernotes.exe (normalerweise in %GOPATH%bin). Zum Beispiel:
{
"argv": [
"C:\gopath\bin\gophernotes.exe",
"{connection_file}"
],
"display_name": "Go",
"language": "go",
"name": "go"
}
Sie können Jupyter + Gophernotes ausprobieren oder ausführen, ohne etwas mit Docker zu installieren. Um ein Go-Notebook auszuführen, das nur Dinge aus der Standardbibliothek benötigt, führen Sie Folgendes aus:
docker run -it -p 8888:8888 gopherdata/gophernotes
Oder um ein Go-Notebook mit Zugriff auf gängige Go-Data-Science-Pakete (gonum, gota, golearn usw.) auszuführen, führen Sie Folgendes aus:
docker run -it -p 8888:8888 gopherdata/gophernotes:latest-ds
In beiden Fällen sollte die Ausführung dieses Befehls einen Link ausgeben, dem Sie folgen können, um in einem Browser auf Jupyter zuzugreifen. Um Notebooks an einem Ort außerhalb des Docker-Images zu speichern und/oder von dort zu laden, sollten Sie außerdem einen Volume-Mount verwenden. Zum Beispiel:
docker run -it -p 8888:8888 -v /path/to/local/notebooks:/path/to/notebooks/in/docker gopherdata/gophernotes
Wenn Sie eine der oben genannten lokalen Installationen abgeschlossen haben (d. h. nicht die Docker-Installation), starten Sie den Jupyter-Notebook-Server:
jupyter notebook
Wählen Sie im Dropdown-Menü New
Go
.
Viel Spaß!
Starten Sie ninteract.
Wählen Sie im Nteract-Menü Sprache -> Los.
Viel Spaß!
Zusätzlich zum Go-Code werden auch die folgenden Sonderbefehle unterstützt – sie müssen in einer eigenen Zeile stehen:
gophernotes nutzt Gomacro unter der Haube, um Go-Code interaktiv auszuwerten. Sie können fast jeden Go-Code mit Gomacro auswerten, es gibt jedoch einige Einschränkungen, die hier ausführlicher erläutert werden. Vor allem unterstützt Gophernotes Folgendes NICHT:
plugin
Pakets.Außerdem wird die Erstellung neuer benannter Typen emuliert und ihre Methoden sind nur für interpretierten Code sichtbar.
Abhängig von Ihrer Umgebung müssen Sie möglicherweise den Pfad zur ausführbaren gophernotes
Datei in kernel/kernel.json
manuell ändern, bevor Sie sie nach ~/.local/share/jupyter/kernels/gophernotes
kopieren. Sie können hier den vollständigen Pfad zur ausführbaren gophernotes
angeben, und es sollten keine weiteren Probleme auftreten.
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
Stoppen Sie Jupiter, wenn es bereits läuft.
Fügen Sie einen symbolischen Link zu /go/bin/gophernotes
von Ihrem Pfad zur ausführbaren Gophernotes-Datei hinzu. Wenn Sie die obigen Anweisungen befolgt haben, wird dies sein:
sudo ln -s $HOME/go/bin/gophernotes /go/bin/gophernotes
Starten Sie Jupiter neu und Sie sollten jetzt betriebsbereit sein.
Auf den ersten Blick scheint es sich um eine Einschränkung des neuen Importmechanismus zu handeln, der Go-Module unterstützt. Sie können den alten (nicht modulbewussten) Mechanismus mit dem Befehl %go111module off
Um die Modulunterstützung wieder zu aktivieren, führen Sie %go111module on
aus
Um die Protokolle für Ihr Jupyter-Notebook anzuzeigen, verwenden Sie die Option --log-level
jupyter notebook --log-level DEBUG