KobayashiRui
11/6/2017 - 3:34 PM

python&jupyterバージョン管理など

docker内のjuyterでOpenAiGymを使用する

  1. apt-get install xvfb
  2. xvfb-run -s "-screen 0 1400x900x24" jupyter notebook --allow-root

上記の作業をすることでJSAnimationを利用した表示などが可能になる

RISE

jupyter Notebookでプレゼンができるようになる

Jupyter Content Management Extensions

IBMが作成した拡張機能でjupyterからnotebookファイル内の全文検索が可能

jupyterを改造する

nbextensionsを入れる

nbextensionsを入れることで拡張機能の管理ができる

手順

  1. conda install -c conda-forge jupyter_contrib_nbextensions
  2. jupyter notebook --generate-config : これでコンフィグファイルを作成する コンフィグファイルは ~/.jupyterの中に作成される

手順(condaを使用しないパターン)

  1. pip install pyyaml
  2. git clone https://github.com/ipython-contrib/IPython-notebook-extensions
  3. cd IPython-notebook-extensions
  4. sudo python setup.py install

jupyterにカラーテーマを入れる

  1. pip install jupyterthemes
  2. jt -t chesterish -T -f roboto -fs 9 -tf merriserif -tfs 11 -nf ptsans -nfs 11 -dfs 8 -ofs 8 : jtコマンドからいろいろ設定して適応できる 今回のこれは一つの例
    詳しい情報は=>https://github.com/dunovank/jupyter-themes

jupyterにvimを入れる

vimの設定もデフォルトでできるがショートカットなどgitからいれた方が色々便利なのでその方法

  1. git clone https://github.com/lambdalisue/jupyter-vim-binding /Users/daiki_akimoto/.pyenv/versions/anaconda3-4.0.0/share/jupyter/nbextensions/vim_binding : git をクローンする場所はanacondaのjupytergaが入っている場所のため.pyenvの後ろは自分の環境に合わせる
  2. nbextensionからVIM bindingを選択する

vimbindingの拡張

vimbindingのgit => https://github.com/lambdalisue/jupyter-vim-binding

ショートカットなどを導入する

  1. ~/.jupyter/custom/custom.jsファイルを作成する すでにあったら追記するかんじで
  2. 下記の内容をコピペ
// Configure CodeMirror Keymap
require([
  'nbextensions/vim_binding/vim_binding',   // depends your installation
], function() {
  // Map jj to <Esc>
  CodeMirror.Vim.map("jj", "<Esc>", "insert");
  // Swap j/k and gj/gk (Note that <Plug> mappings)
  CodeMirror.Vim.map("j", "<Plug>(vim-binding-gj)", "normal");
  CodeMirror.Vim.map("k", "<Plug>(vim-binding-gk)", "normal");
  CodeMirror.Vim.map("gj", "<Plug>(vim-binding-j)", "normal");
  CodeMirror.Vim.map("gk", "<Plug>(vim-binding-k)", "normal");
});

// Configure Jupyter Keymap
require([
  'nbextensions/vim_binding/vim_binding',
  'base/js/namespace',
], function(vim_binding, ns) {
  // Add post callback
  vim_binding.on_ready_callbacks.push(function(){
    var km = ns.keyboard_manager;
    // Allow Ctrl-2 to change the cell mode into Markdown in Vim normal mode
    km.edit_shortcuts.add_shortcut('ctrl-2', 'vim-binding:change-cell-to-markdown', true);
    // Update Help
    km.edit_shortcuts.events.trigger('rebuild.QuickHelp');
  });
});

これでいい感じのショートカットができる

色の調整

カラーテーマを適応したままだと書き込みモードなどで背景が明るく文字が見ずらい

  1. ~/.jupyter/custom/custom.cssに移動する
  2. div.cell.edit_mode という部分の直前に下記の内容入れる
/* Jupyter cell is in normal mode when code mirror */
.edit_mode .cell.selected .CodeMirror-focused.cm-fat-cursor {
background-color: #000000 !important;
}
/* Jupyter cell is in insert mode when code mirror */
.edit_mode .cell.selected .CodeMirror-focused:not(.cm-fat-cursor) {
background-color: #000000 !important;
}

colorのところが#000000になっているが好きな値に変更し、自分の好きな色にできる

jupyter他の色の調整系

  1. ブラウザの要素検索をjupyterの色を変えたい部分を選択して実行する
  2. 選択した部分のhtmlのclassの名前などを~/.jupyter/custom/custom.cssで検索する
  3. 検索から当てはまる部分がその部分の色を表しているのでそこのcolorの値を変更すれば色が変更される
  4. 上記の作業後、jupyterをブラウザで再読み込みすると反映されている

jupyterに新しいカーネルを作成し、切り替えられるようにする

使用目的としてはtensorのgpuとcpuの切り替えなど

方法

  1. anacondaで仮想環境を作成する <= そこに自分の作成したい環境のものをpip or conda でいれる
  2. conda install notebook ipykernel
  3. ipython kernel install --user --name 仮想環境の名前 --display-name カーネルとして登録する名前
    注意 --name 仮想環境の名前 を指定しないと既存のpython3のkernelが上書きされてしまう!

pyenv内にある切り替え可能なバージョンの確認

pyenv versions

ここにanacondaがいる

pyenvの現在のバージョンの確認

python --version

pyenvを利用してバージョンを切り変える

pyenv global 指定する
pyenv local 指定する

globalにすると全体に localにするとそのカレントディレクトリに指定したバージョンが反映される

anacondaからsystemのpythonに変えたい場合

pyenv global system

にするといける
aptでいれてsystemのpythonにある場合はこれにするとうまくいく