gophernotes
— это ядро Go для ноутбуков Jupyter и nteract. Он позволяет использовать Go в интерактивном режиме в браузерном блокноте или настольном приложении. Используйте gophernotes
для создания и обмена документами, содержащими живой код Go, уравнения, визуализации и пояснительный текст. Этими блокнотами с живым кодом Go можно затем поделиться с другими по электронной почте, Dropbox, GitHub и программе просмотра блокнотов Jupyter. Идите вперед и занимайтесь наукой о данных или чем-нибудь еще интересным с помощью блокнотов Go!
Благодарности . Этот проект использует интерпретатор Go под названием gomacro для интерактивной оценки кода Go. Логотип gophernotes был разработан блестящим Маркусом Олссоном и вдохновлен оригинальным дизайном Go Gopher Рене Френч.
go install
).Инструкции ниже должны работать как в 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
при импорте сторонних библиотек. Этот пакет надежно работает в Mac OS X с Go 1.10.2+, если вы никогда не выполняете strip gophernotes
.
Способ 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 и запустить gophernotes/Jupyter в Docker.
Загрузите gophernotes внутри GOPATH, скомпилируйте и установите его.
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"
}
Вы можете попробовать или запустить Jupyter + gophernotes, не устанавливая ничего, используя Docker. Чтобы запустить блокнот Go, которому нужны только элементы стандартной библиотеки, запустите:
docker run -it -p 8888:8888 gopherdata/gophernotes
Или чтобы запустить блокнот Go с доступом к распространенным пакетам обработки данных Go (gonum, gota, golearn и т. д.), запустите:
docker run -it -p 8888:8888 gopherdata/gophernotes:latest-ds
В любом случае запуск этой команды должен вывести ссылку, по которой вы можете перейти для доступа к Jupyter в браузере. Кроме того, чтобы сохранять записные книжки и/или загружать записные книжки из места за пределами образа Docker, вам следует использовать подключение тома. Например:
docker run -it -p 8888:8888 -v /path/to/local/notebooks:/path/to/notebooks/in/docker gopherdata/gophernotes
Если вы выполнили одну из локальных установок, описанных выше (т. е. не установку Docker), запустите сервер ноутбуков Jupyter:
jupyter notebook
Выберите Go
в раскрывающемся меню New
.
Веселиться!
Запустите интеракт.
В меню взаимодействия выберите Язык -> Перейти.
Веселиться!
Помимо кода Go, также поддерживаются следующие специальные команды — они должны быть на отдельной строке:
gophernotes использует gomacro для интерактивной оценки кода Go. С помощью gomacro можно оценить практически любой код Go, но есть некоторые ограничения, которые более подробно обсуждаются здесь. В частности, gophernotes НЕ поддерживает:
plugin
Go.Кроме того, эмулируется создание новых именованных типов, и их методы видны только интерпретируемому коду.
В зависимости от вашей среды вам может потребоваться вручную изменить путь к исполняемому файлу gophernotes
в kernel/kernel.json
перед копированием его в ~/.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, если он уже запущен.
Добавьте символическую ссылку на /go/bin/gophernotes
из вашего пути к исполняемому файлу 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