- はじめに -
業務PCがWinからMacになりまして、Jupyter notebookしたいので自分の設定とextensionの導入までやったメモ。
最初に参考資料を示しておくと、どのネット記事よりも以下extensionのGithubリポジトリのREADMEが分かりやすい。
Pythonやpip、バージョン管理環境に合わせて適宜読み替えて。
この記事書いた時点
Mac OSX Sierra 10.12 pyenv上でPython3環境構築済
- JupyterをVivaldiで起動するまで -
jupytera 本体の導入はpip
sudo pip install jupyter
インストールが終わったらconfigファイルを作る
jupyter notebook --generate-config sudo vim ~/.jupyter/jupyter_notebook_config.py
Windowsだと、マシンのデフォルトブラウザで開いてくれてた気がしたけど、MacだとSafariでnotebookが開いてしまう。
Vivaldiなるブラウザを常用しているので以下設定。
c.NotebookApp.browser =u'/Applications/Vivaldi.app/Contents/MacOS/Vivaldi %s'
Chromeだと多分こう。
c.NotebookApp.browser = u'/Applications/Google/ Chrome.app/Contents/MacOS/Google\ Chrome %s'
ブラウザへのパスは適宜書き換える。
python - Launch IPython notebook with selected browser - Stack Overflow
Jupyterをブラウザ指定して新しいウィンドウで開く【なれない日記20160709】 - けつあご日記
jupyter常用者なのでbashrcにはaliasの指定をしている。
alias ju='jupyter notebook'
- jupyter extension -
extension導入は前述の通りREADMEを見ながら。
GitHub - ipython-contrib/jupyter_contrib_nbextensions: A collection of various notebook extensions for Jupyter
sudo pip install -e jupyter_contrib_nbextensions jupyter contrib nbextension install --user
上のコマンドだけとか、gitからcloneしてsetup.py動かせば導入終わりみたいなネット記事が多い理由は謎。(多分上だけだと、nbextensions見に行っても404 Not Foundだと思うんだけど…)
2つめのnbextension installでブラウザ向けのJSやCSSが入るのだけど、highlight_selected_wordが上手く導入できてないっぽくて死んだ。
NotADirectoryError: [Errno 20] Not a directory: '/usr/local/lib/python3.6/site-packages/jupyter_highlight_selected_word-0.0.11-py3.6.egg/jupyter_highlight_selected_word/static/highlight_selected_word'
highlight_selected_wordだけpipで再インストール
sudo pip uninstall jupyter_highlight_selected_word sudo pip install jupyter_highlight_selected_word jupyter contrib nbextension install --user
http://localhost:8888/nbextensions を見に行けばextensionのオン・オフができる。
エディタ内で色々開閉できる「Codefolding in Editor」「Codefolding」、メニューに拡張ショートカットを追加する「Nbextensions edit menu item」「Nbextensions dashboard tab」、Vimのキーバインド使う用の「Select CodeMirror Keymap」、PEPの下僕として78文字超えたくないので「Ruler」を使っているのでONにしておわり。
- StylishでMonokai風にする -
JupyterはそもそもThemeを使う機能を備えているが、Jupyterを動かすサーバ等環境が変わったら一々設定しないといけないのと、コーディング中にも設定見直したいのでChrome拡張を使ってCSSを書き換えている。
以前までStylishを使っていたのだけど、情報送信の話があったでちょっと考えもの。
Webブラウザアドオン「Styish」、ユーザーデータの収集を始めて騒動に | スラド IT
今はCSSとJSのシンプルな拡張は全て自前。
Stylish以外で簡易なのだとStylus、Stylistあたりか。
一応StylishのユーザグループにJupyter用のCSSが公開されてたりして、これを土台に一部書き換えて使っている。
書き換えてMonokaiっぽくする文字周りはこんな感じ。白文字がfffなので適宜。
div.output_stderr {background-color: #050505;} div.output_stderr pre { color: #509050; font-size: 12px;} .cm-s-ipython .CodeMirror-matchingbracket { text-decoration: underline; color: #c3c3c3 !important; } .CodeMirror { color: #c3c3c3 !important; } .cm-s-default .cm-link {color: #3974dd;} .cm-s-default .cm-string {color: #de846c;} .cm-s-default .cm-header {color: #1090f0;} .cm-s-ipython div.CodeMirror-selected {background: #3C4555 !important;} .cm-s-ipython .CodeMirror-gutters {background: #39414F; border: 0px; border-radius:0px;} .cm-s-ipython .CodeMirror-linenumber {color: #5A647B !important; font-size: 11pt;} .cm-s-ipython .CodeMirror-cursor {border-left: 2px solid #0095ff !important;} .cm-s-ipython span.cm-comment {color: #6E7C95; font-style: normal !important;} .cm-s-ipython span.cm-atom {color: #CAA6EC;} .cm-s-ipython span.cm-number {color: #ae81ff;} .cm-s-ipython span.cm-property {color: #fff;} .cm-s-ipython span.cm-attribute {color: #E39194;} .cm-s-ipython span.cm-keyword {color: #f92672; font-weight: normal;} .cm-s-ipython span.cm-string {color: #e6db74; font-weight: normal;} .cm-s-ipython span.cm-operator {color: #f92672; font-weight: normal;} .cm-s-ipython span.cm-builtin {color: #66d9ef; font-weight: normal;} .cm-s-ipython span.cm-boolean {color: #E39194;} .cm-s-ipython span.cm-variable {color: #fff;} .cm-s-ipython span.cm-variable-2 {color: #fd971f;} .cm-s-ipython span.cm-error {background: rgba(191, 97, 106, .3) !important;} .cm-s-ipython span.cm-tag {color: #CAA6EC;} .cm-s-ipython span.cm-link {color: #E39194;} .cm-s-ipython span.cm-storage {color: #CAA6EC;} .cm-s-ipython span.cm-entity {color: #E39194;} .cm-s-ipython span.cm-class {color: #E5DEA5;} .cm-s-ipython span.cm-support {color: #77ABE7;} .cm-s-ipython span.cm-qualifier {color: #77ABE7;} .cm-s-ipython span.cm-property {color: #fff;}
あとextensionで導入したCodefoldingの三角のアレの位置とかを修正
.CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { margin-left: -4px; }
跡は幅を100% にしたりしてこんな感じ
拡張なのでCSSで指定しにくいところの書き換えはできないけどまあ概ね満足。
コードもグラフ出力も黒背景の方が僕は好きです。
- おわりに -
extensionは導入はpyenvやAnaconda等のベース環境によってたまに失敗してるイメージがあるんだけど、なんかもっとこう絶対優勝できるようになりたい。
あと便利なextensionあったら知りたいところです。
はてブコメントでよしなに。
Jupyter生活は快適でサイコー。
IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集
- 作者: Cyrille Rossant,菊池彰
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/25
- メディア: 大型本
- この商品を含むブログ (1件) を見る