post Image
Macでjupyter XXX (iruby, R, nodes, go) インストール

いつもはpythonで使っているjupyterだけど、他の言語もサポートしているというので入れてみました。
– A) ruby
– B) R
– C) nodes
– D) go

結果、・・・、同じディレクトリにpython, ruby, R, go, nodejsの.ipynbファイルがあると混乱しますね(笑)。

jupyter-many.png

jupyterインストール

まずはjupyter本体(&python3)インストールから(インストール済みの人は飛ばしてください)

terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install python3
pip3 install jupyter


インストール後、

terminal
jupyter notebook

でサーバが動作、少し待つとブラウザで
http://localhost:8888
が開く。なお、&をつけてバックグラウンドで立ち上げると後でkillすることになり面倒(kill `ps -ef| grep jupyter | awk {'print $2'}`で2列目を取って消す。いい方法はないか)。

(ひとこと)Macにpythonというと、pyenvからpython・・、とか、anacondaは色々入ってて・・とかの記事が多い。が、普通に使うだけならbrewでpython3が楽だと思う。python2ならpython/pip、python3ならpython3/pip3と切り替えなしに併用できる。anacondaのバージョンが上がっても置いてきぼり、もなし。

A) jupyterでruby (iruby)

jupyter-ruby.png
さてルビー。

terminal
brew install zeromq czmq
gem install rbczmq -- --with-system-libs
gem install iruby

gem install nyaplot # これはjupyterとか関係ないが欲しくて入れた。

これで話題の?nyaplotも動いて満足(が、期待の3d plotは、
Javascript error adding output!
TypeError: undefined is not an object (evaluating ‘ext.pane’)
See your browser Javascript console for more details.
とエラー、なぜ・・・)

rbczmqの入れ方は下記記事を参考にさせていただきました。

http://qiita.com/mrkn/items/78196ed59266f58dcb64

(備考)なお、Macならrbczmqの代わりにffi-rzmq、とも言われているが、例)

http://qiita.com/domitry/items/aa348caf993e876a7be5

terminal
# 自分の環境ではffi-rzmqでは動作せず、、
gem install ffi-rzmq
gem install iruby

、立ち上がりはするのですが、すぐにDead kernelとなって正常に動作しませんでした。結局、gem uninstall ffi-rzmqして上のやり方でrbczmqを入れました。

以下のどれを打っても同じものが立ち上がります。
– iruby notebook
– python notebook
– jupyter notebook

なお、rubyはrbenvから入れたと思う(詳細は忘れた)。

terminal
brew install rbenv
...

B) jupyterで R

jupyter-R.png

https://github.com/IRkernel/IRkernel

上記公式の通り、Rを起動、

R
install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()  # to register the kernel in the current R installation

でインストール完。jupyter notebookで立ち上げNewでRを選んだら、plot(iris)してみよう。

別サイトでは他のやり方が紹介されていたが動かず。公式を見てやった。なお、Rはパッケージをダウンロードして入れたと思う。

brewからRを入れる場合、tap homebrew/scienceとしないと、ない、と言われる。

terminal
brew tap homebrew/science
brew install R

なお、Rの環境としてexploratoryが出てきた。注目。

https://exploratory.io
http://qiita.com/21-Hidetaka-Ko/items/0c746d84d568113536bf

C) jupyterでnodejs

jupyter-nodejs.png

https://github.com/notablemind/jupyter-nodejs

git clone git@github.com:notablemind/jupyter-nodejs.git
では認証で怒られた。ので、
git clone https://github.com/notablemind/jupyter-nodejs.git

あとはそのまま

terminal
git clone https://github.com/notablemind/jupyter-nodejs.git
cd jupyter-nodejs
mkdir -p ~/.ipython/kernels/nodejs/
npm install && node install.js
make

でインストール完。途中、なんか言われたような気がしたが、普通に動いている。console.log(‘hello’)してみよう。
なお、nodejsインストールは、

terminal
brew install node

D-1) jupyterでgo (docker編)

jupyter-go.png
公式、

https://github.com/gopherds/gophernotes

を見るとローカルに入れる手順が煩雑(実はそうでもない)と思い、まずはdockerでやる。Macでは以下、

terminal
docker pull dwhitena/gophernotes:latest
docker run --net host -d dwhitena/gophernotes jupyter notebook --no-browser --ip=0.0.0.0

とあるが動かず(http://localhost:8888を見てもhttp://0.0.0.0:8888を見てもない)。探すと、

https://github.com/gopherds/gophernotes/issues/43

に回答が。ポートマッピングが必要らしい(当たり前か・・)。8888はローカルのjupyterが使っているので、ここでは9000番を使う。

terminal
docker run -p 9000:8888 -d dwhitena/gophernotes jupyter notebook --no-browser --ip=0.0.0.0

なお、issues/43では、–rmをつけている。–rmをつけるとCTRL-Cでコンテナ停止、削除できて便利。が、もう一度立ち上げると前のファイル(Untitled.ipynb)は消えているのはマズイ。ので、上記が良いと思う。

動いたら9000番で接続。
http://localhost:9000

NewでGoを選んだら、fmt.Println("Hello, 世界")としてみる

goのインストールは、以下、

terminal
brew install golang

dockerは公式ページからダウンロード(Docker.dmg)してインストール。

D-2) jupyterでgo (ローカル編)

dockerは楽で起動も一瞬。だが、巨大なイメージ、コンテナを置いておくのは面白くない。ので、やはりローカルに入れる。再度、公式、

https://github.com/gopherds/gophernotes

を見る。面倒に見えるが実は、設定の置き方が人により違うというだけ。まず、jupyter –data-dirとして、どこに自分のjupyterカーネル設定があるのかを確認する。自分は、~Library/Jupyterらしい。

terminal
jupyter --data-dir
/Users/xxx/Library/Jupyter

あとは、下記ですんなり入る。

terminal
go get golang.org/x/tools/cmd/goimports
go get -tags zmq_4_x github.com/gopherds/gophernotes

mkdir -p ~/Library/Jupyter/kernels/gophernotes
cp -r $GOPATH/src/github.com/gopherds/gophernotes/kernel/* ~/Library/Jupyter/kernels/gophernotes

なお、設定(jupyter –data-dirの出力)が~Library/Jupyterではなく、~/.ipythonの人は、以下になる(go getの所は同じ)。

terminal
go get golang.org/x/tools/cmd/goimports
go get -tags zmq_4_x github.com/gopherds/gophernotes

mkdir ~/.ipython/kernels/gophernotes
cp -r $GOPATH/src/github.com/gopherds/gophernotes/kernel/* ~/.ipython/kernels/gophernotes/

(ZeroMQ 2.2.xとZeroMQ 4.xがあるようだが、ZeroMQ 2.2.xは入らなかったのでZeroMQ 4.xとした。)

D-3) goの実行

試しに、公式https://golang.orgにあるhello worldを試してみるとDead kernel!!!

jupyter(go)
// mainを使おうとするとjupyterではDead kernelになって止まる!!
package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

どうもpackage mainとか、するのはダメらしい。以下のように、mainでなくtestならOK。

jupyter(go)
import "fmt"
func test() {
    fmt.Println("Hello, 世界")
}
test()

なお、fmtは最初からimportされているらしくimport “fmt”なしで、fmt.Printlnできる。

(ご参考)Macでのjupyterカーネル設定の場所

私の場合、

  • ruby、nodesは、~/.ipython/kernels/
  • ir(=R)、gophernotes(=go)は、~Library/Jupyter/kernels/

にインストールされた。現状、~Library/Jupyterでも、~/.ipython/kernels/でも、どちらでも動くらしい。実際、goも最初は~/.ipython/kernels/に入れたが普通に動いた。後から、置き場所を間違えた!とmvで~Library/Jupyter/kernels/に移した。どちらにおいても、一方から他方に場所を移動しても動くような。


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。