仮想マシンでJupyterを使うときの初期設定

さっとPythonで何かを試すときに、仮想マシンを用意して、以下のシェルスクリプトでJupyterを初期化することにしました。

引数でPythonのバージョンも指定できるようにしました。デフォルトは3.5.4です。

numpy, scipy, pandasはたいてい必要になるので、ついでにインストールしています。あと、グラフ描画のためにmatplotlibとseabornも入れています。

bash専用のnotebookもあると便利かと思い、bash_kernelもインストールしました。

ホームディレクトリで

$ jupyter notebook

で起動し、ファイルは'~/notebooks'に置くことを想定しています。

#!/bin/bash

echo '# pyenv' >> ~/.bash_profile
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

source ~/.bash_profile

python3_version=${1:-3.5.4}
pyenv global $python3_version
pip install --upgrade pip
pip install --upgrade setuptools
pip install \
  numpy \
  scipy \
  pandas \
  matplotlib \
  seaborn \
  jupyter \
  bash_kernel \
  jupyter_contrib_nbextensions \
  jupyterthemes

cd; pyenv local $python3_version; mkdir -p $HOME/notebooks
jupyter notebook --generate-config
cat <<EOF >> $HOME/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8080
c.NotebookApp.open_browser = False
c.NotebookApp.notebook_dir = u'notebooks/'
EOF

python -m bash_kernel.install

jupyter contrib nbextension install --user
mkdir -p $(jupyter --data-dir)/nbextensions
cd $(jupyter --data-dir)/nbextensions; \
  [-e vim_binding] && rm -rf vim_binding; \
  git clone https://github.com/lambdalisue/jupyter-vim-binding.git vim_binding
jupyter nbextension enable autosavetime/main
jupyter nbextension enable codefolding/main
jupyter nbextension enable collapsible_headings/main
jupyter nbextension enable equation-numbering/main
jupyter nbextension enable execute_time/ExecuteTime
jupyter nbextension enable gist_it/main
jupyter nbextension enable livemdpreview/livemdpreview
jupyter nbextension enable scratchpad/main
jupyter nbextension enable select_keymap/main
jupyter nbextension enable toc2/main
jupyter nbextension enable vim_binding/vim_binding
jupyter contrib nbextensions migrate

jt -t monokai -vim -f inconsolata -N -T

それにしても、拡張機能が充実していますね。もう、ちょっとしたことなら全てJupyterで事足りそうです。