Jupyter¶
シェル芸人のためのJupyter環境を構築しよう!!!11
スクリーンショット¶
Jupyterとは¶
スクリーンショットをご覧あれ。ブラウザでPython(Bashも)を実行出来る環境です。
- Markdown形式のメモと一緒にWeb上で実行&保存できちゃうステキ機能
- 書いた物は保存できて、いつでも再実行可。
- スライドやhtmlにも変換できます。
- GitHub Gistにエクスポートすれば、公開もできちゃう。
まさにPythonista(シェル芸人)のための環境ですねw
噂の買い切りVPSCloudAtCostに導入してみてもいいかもしれない。
Jupyter環境の構築¶
ググると幾つか出てきますが、minicondaを使用したインストール方法を以下にまとめます。
minicondaを利用する利点としては、こんな感じです。
- 一般ユーザの環境に導入できる(システムに深く食い込まないので、アンインストールが簡単)
- 既存のPython環境と別々に作ることができ、かつ、お互いに干渉しない環境が簡単に作れる
- 容量がanacondaより小さく、必要最小限。
minicondaは、主にPythonの数値処理系のライブラリを加えたanacondaというものの最小のセットになります。
想定する環境¶
以下を想定しています
- CentOS または RedHatLinux
実際にセットアップした環境は以下です。
CentOS Linux release 7.2.1511 (Core)
minicondaのインストール¶
以下からセットアップ用のファイルをダウンロードします。
python3用のセットアップファイルをダウンロードしてください。
miniconda
http://conda.pydata.org/miniconda.html
$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
余談ですけど、このシェルスクリプト、バイナリファイルと悪魔合体する黒魔術を使っているので、catしてみたりすると大変な事になりますw
実行。
途中、対話形式で入力を求められますが、以下のよう入力してください。
$ bash Miniconda3-latest-Linux-x86_64.sh [Enter] yes [Enter] # or 任意のインストール先を入力 no # システムに標準で入っているPython環境と使い分けをしたいため。.bashrcに追加されてもいい人は yes にしておく。
インストール時にnoを選択して .bashrc に追加しなかったので、以下の通り、任意に環境変数をセットするシェルスクリプトを作成しておきます。
これによって、こんな環境の切り替えができます。
- 通常は、システムに入っているPythonが使われる。
- このシェルスクリプトを実行して環境変数を取り込んだときだけ、miniconda環境が使われる。
環境変数(PATH)設定用のシェルスクリプトを作る。
$ vi setenv.sh #!/bin/bash PATH=[minicondaのインストールディレクトリ]/miniconda3/bin:$PATH export PATH
ドット実行する。
環境変数PATHの先頭に[minicondaのインストールディレクトリ]/bin が含まれていることを確認する。
$ . setenv.sh $ env |grep PATH PATH=[minicondaのインストールディレクトリ]/miniconda3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Jupyterのインストール(minicondaインストール先にインストールされる)¶
$ conda install jupyter
Jupyter設定ファイルの生成。
$ jupyter notebook --generate-config
パスワードの作成(結果をメモしておく)
以下はパスワードを hoge にしているけど、適宜変更してね。
$ python Python 3.5.1 |Continuum Analytics, Inc.| (default, Dec 7 2015, 11:16:01) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from notebook.auth import passwd >>> passwd() Enter password: hoge Verify password: hoge 'sha1:86a104de86a2:d3f296d042d0be7c38df963b01670e51dd2ab081' >>> quit()
Jupyter設定ファイルの編集
- ローカルホストからしか接続を認めない→どこからでもOKに修正
- Jupyterで書いたファイルの保存先を指定
- 認証パスワードを設定(上記Pythonのpasswd()の事項結果をコピペ)
- 接続先ポート番号を指定(デフォルトは8888)
$ cd ~/.jupyter $ vi jupyter_notebook_config.py - # c.NotebookApp.ip = 'localhost' + c.NotebookApp.ip = '*' - # c.NotebookApp.notebook_dir = u'' + c.NotebookApp.notebook_dir = u'ファイルを保存する任意のディレクトリ' - # c.NotebookApp.password = u'' + c.NotebookApp.password = u'sha1:86a104de86a2:d3f296d042d0be7c38df963b01670e51dd2ab081' - # c.NotebookApp.port = 8888 + c.NotebookApp.port = 8883
httpsて通信するための設定
- Let's Encrypt サーバー証明書を取得しましょう。
- 詳細は、ServersManの Let's Encrypt サーバー証明書の取得と自動更新設定 を参照のこと。
- 証明書が準備できたら、Jupyter設定ファイルの編集します。
- サーバ証明書の所在を設定
- 秘密鍵の所在を設定
$ cd ~/.jupyter $ vi jupyter_notebook_config.py - # c.NotebookApp.certfile = u'' + c.NotebookApp.certfile = u'/etc/letsencrypt/live/<ドメイン名>/cert.pem' - # c.NotebookApp.keyfile = u'' + c.NotebookApp.keyfile = u'/etc/letsencrypt/live/<ドメイン名>/privkey.pem'
Jupyterに Bash のJupyterカーネルを導入する¶
Jupyterカーネルと呼ばれる以下を追加インストールすることで、
Bash版Jupyterになるのでありえん良さみが深い(Python3環境が前提、Python2だどダメ)。
A bash kernel for IPython
https://github.com/takluyver/bash_kernel
$ . setenv.sh $ pip install bash_kernel $ python -m bash_kernel.install
実は、他のいろんな言語も用意されているので、大半の言語はJupyter上で動かす事ができる。
参考:IPython kernels for other languages
Jupyterの起動¶
起動
$ jupyter-notebook
後はブラウザで、https://example.com:8883 にアクセスするべし。
minicondaでPython2環境も作って共存させる場合¶
同じ方法でpython2環境も起動できる。
ただし、python3とpython2のJupyter環境を同時に起動するには、
Jupyter設定ファイルのポート番号を別々にする必要がある
$ vi jupyter_notebook_config_for_python2.py - # c.NotebookApp.port = 8888 + c.NotebookApp.port = 8882 # python3の設定値とは別にする
起動は、作った設定ファイルを直接指定して起動できる。
$ jupyter-notebook --config=設定ファイルのパス
使い方¶
使い方はググると沢山出てくるので、そちらに譲ります。
(当ページ下部のMemoの所にもリンクを入れておきました)
シェル芸人のためのJupyterの使い方を説明します。
シェル芸人のためのJupyter使い方¶
まず、デフォルトのPythonカーネルでもシェル芸はできます。
行頭に%%bashと入力すればシェルを実行できます。
%%bash date;echo hoge;date
ただ、カーネルを Bash に切り替えることで、この%%bashが不要になります。
あとは……わかるね?
date;echo hoge;date
Memo¶
Jupyter関連で役立ちそうなリンクのメモ。
Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma
http://myenigma.hatenablog.com/entry/2016/02/20/183423
Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma
Jupyter (iPython) Notebookを使ってプレゼンテーション資料を作る方法 - MyEnigma
http://myenigma.hatenablog.com/entry/2016/05/22/160209
Jupyter (iPython) Notebookを使ってプレゼンテーション資料を作る方法 - MyEnigma
Qiita
Jupyter事始め - Qiita
http://qiita.com/taka4sato/items/2c3397ff34c440044978
extensionを追加してもっと快適なJupyter環境を構築する - Qiita
http://qiita.com/sasaki77/items/30a19d2be7d94116b237
Condaで作ってる仮想環境の切り替えをJupyter上で簡単に行う方法 - Qiita
http://qiita.com/yoppe/items/38005f415a5b8b884c7d
Jupyter Notebookでブログ書きたい - Qiita
http://qiita.com/patraqushe/items/49a990cbdfb51afed620
Jupyter notebook で HTML も自動作成 - Qiita
http://qiita.com/junkoda/items/011d44dcc1c8bd0a936a
Jupyterでコンテナーを入れ子の枠で表現(図式化)、とそれを作る過程で調べたこと - Qiita
http://qiita.com/argius/items/17710321c8225bfb7417
Jupyterで好きなHTMLを埋め込む - Qiita
http://qiita.com/xeno1991/items/65b7da476d6f89d06388
Qiitaの記事とJupyter notebokとの相互変換 - Qiita
http://qiita.com/Tsutomu-KKE@github/items/168400d2e3ea44a70022
iPython でスライド作り - Qiita
http://qiita.com/sosuke/items/e42b5b81878e361249b6
junpyter notebookをCUIで実行&保存 - Qiita
http://qiita.com/nzw0301/items/83814189bd93224b7c51
nbviewerでスライド表示もできるようになった!【Jupyter】 - Qiita
http://qiita.com/ssh0/items/de6cc6aacd004a2e57dd
データサイエンティストに向けたコーディング環境Jupyter Notebookの勧め - Qiita
http://qiita.com/y__sama/items/17aedf0c05187edd61c3
nbviewer - A simple way to share Jupyter Notebooks
http://nbviewer.jupyter.org/
once upon a time, - JupyterからSpark clusterを操作できるlivy + sparkmagicを試してみた
http://chezou.hatenablog.com/entry/2016/07/12/115000
Jupyter Notebook の Tips をまとめてみた
https://adtech.cyberagent.io/techblog/archives/2317