gophernotes
é um kernel Go para notebooks Jupyter e nteract. Ele permite que você use o Go interativamente em um notebook ou aplicativo de desktop baseado em navegador. Use gophernotes
para criar e compartilhar documentos que contenham código Go ao vivo, equações, visualizações e texto explicativo. Esses notebooks, com o código Live Go, podem então ser compartilhados com outras pessoas por e-mail, Dropbox, GitHub e Jupyter Notebook Viewer. Vá em frente e faça ciência de dados, ou qualquer outra coisa interessante, com os notebooks Go!
Agradecimentos - Este projeto utiliza um interpretador Go chamado gomacro para avaliar o código Go interativamente. O logotipo gophernotes foi desenhado pelo brilhante Marcus Olsson e foi inspirado no design original Go Gopher de Renee French.
go install
).As instruções abaixo devem funcionar tanto no Linux quanto no FreeBSD.
Método 1: instalação rápida como módulo
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
Método 2: instalação manual do 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
Para confirmar se o binário gophernotes
está instalado no GOPATH, execute-o diretamente:
" $( go env GOPATH ) " /bin/gophernotes
e você deverá ver o seguinte:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
Nota - se você tiver a variável de ambiente JUPYTER_PATH
definida ou se estiver usando uma versão mais antiga do Jupyter, pode ser necessário copiar esta configuração do kernel para outro diretório. Você pode verificar quais diretórios serão pesquisados executando:
jupyter --data-dir
Nota importante - gomacro depende do pacote plugin
ao importar bibliotecas de terceiros. Este pacote funciona de forma confiável no Mac OS X com Go 1.10.2+, desde que você nunca execute o comando strip gophernotes
.
Método 1: instalação rápida como módulo
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
Método 2: instalação manual do 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
Para confirmar se o binário gophernotes
está instalado no GOPATH, execute-o diretamente:
" $( go env GOPATH ) " /bin/gophernotes
e você deverá ver o seguinte:
2017/09/20 10:33:12 Need a command line argument specifying the connection file.
Nota - se você tiver a variável de ambiente JUPYTER_PATH
definida ou se estiver usando uma versão mais antiga do Jupyter, pode ser necessário copiar esta configuração do kernel para outro diretório. Você pode verificar quais diretórios serão pesquisados executando:
jupyter --data-dir
Nota importante - gomacro depende do pacote plugin
ao importar bibliotecas de terceiros. Atualmente, este pacote é compatível apenas com Linux e Mac OS X. Portanto, se você precisar utilizar pacotes de terceiros em seus notebooks Go e estiver executando no Windows, você deve usar a instalação do Docker e executar gophernotes/Jupyter no Docker.
Baixe gophernotes dentro do GOPATH, compile e instale-o
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
Copie a configuração do kernel:
mkdir %APPDATA%jupyterkernelsgophernotes
xcopy %GOPATH%srcgithub.comgopherdatagophernoteskernel %APPDATA%jupyterkernelsgophernotes /s
Observe que se você tiver a variável de ambiente JUPYTER_PATH
definida ou se estiver usando uma versão mais antiga do Jupyter, pode ser necessário copiar esta configuração do kernel para outro diretório. Você pode verificar quais diretórios serão pesquisados executando:
jupyter --data-dir
Atualize %APPDATA%jupyterkernelsgophernoteskernel.json
com o PATH COMPLETO para seu gophernotes.exe (geralmente em %GOPATH%bin). Por exemplo:
{
"argv": [
"C:\gopath\bin\gophernotes.exe",
"{connection_file}"
],
"display_name": "Go",
"language": "go",
"name": "go"
}
Você pode experimentar ou executar Jupyter + gophernotes sem instalar nada usando o Docker. Para executar um notebook Go que precisa apenas de itens da biblioteca padrão, execute:
docker run -it -p 8888:8888 gopherdata/gophernotes
Ou para executar um notebook Go com acesso a pacotes comuns de ciência de dados Go (gonum, gota, golearn, etc.), execute:
docker run -it -p 8888:8888 gopherdata/gophernotes:latest-ds
Em ambos os casos, a execução deste comando deve gerar um link que você pode seguir para acessar o Jupyter em um navegador. Além disso, para salvar notebooks e/ou carregá-los de um local fora da imagem do Docker, você deve utilizar uma montagem de volume. Por exemplo:
docker run -it -p 8888:8888 -v /path/to/local/notebooks:/path/to/notebooks/in/docker gopherdata/gophernotes
Se você concluiu uma das instalações locais acima (ou seja, não a instalação do Docker), inicie o servidor Jupyter Notebook:
jupyter notebook
Selecione Go
no menu suspenso New
.
Divirta-se!
Inicie o Interact.
No menu de interação, selecione Idioma -> Ir.
Divirta-se!
Além do código Go, os seguintes comandos especiais também são suportados - eles devem estar em uma linha por conta própria:
gophernotes usa gomacro nos bastidores para avaliar o código Go interativamente. Você pode avaliar quase qualquer código Go com gomacro, mas existem algumas limitações, que são discutidas em mais detalhes aqui. Mais notavelmente, gophernotes NÃO suporta:
plugin
Go.Além disso, a criação de novos tipos nomeados é emulada e seus métodos ficam visíveis apenas para código interpretado.
Dependendo do seu ambiente, pode ser necessário alterar manualmente o caminho para o executável gophernotes
em kernel/kernel.json
antes de copiá-lo para ~/.local/share/jupyter/kernels/gophernotes
. Você pode colocar o caminho completo para o executável gophernotes
aqui e não deverá ter mais problemas.
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
Pare o jupyter, se já estiver em execução.
Adicione um link simbólico para /go/bin/gophernotes
do seu caminho para o executável gophernotes. Se você seguiu as instruções acima, isso será:
sudo ln -s $HOME/go/bin/gophernotes /go/bin/gophernotes
Reinicie o Jupyter e agora você deverá estar instalado e funcionando.
Numa primeira análise, parece ser uma limitação do novo mecanismo de importação que suporta módulos Go. Você pode alternar o mecanismo antigo (sem reconhecimento de módulo) com o comando %go111module off
Para reativar o suporte a módulos, execute %go111module on
Para ver os logs do seu notebook Jupyter, use a opção --log-level
jupyter notebook --log-level DEBUG