jupyter notebook のカーネルが読み込めない

jupyter notebookでは仮想環境を簡単に変更できますが、今回うまく環境が切り替えることが出来なかったので、メモしておく。

github

  • githubのjupyter notebook形式のファイルはこちら

google colaboratory

  • google colaboratory で実行する場合はこちら

筆者の環境

!sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G9323
!python -V
Python 3.8.5

カーネル確認コマンド

通常、jupyter notebook で実際のpythonの実行環境を表示を確認したい時は以下のコマンドを実行する。 だが、今回ちゃんと所望のpythonのバージョンが指定されていたが、実際にはうまくいかないことがあった。

import sys
sys.executable
'/Users/hiroshi.wayama/anaconda3/envs/lgbm2/bin/python'

課題

lgbmをjupyter notebook上で設定したが、実際に実行するとその環境のpythonが実行されていないことが分かった。

設定しているkernelの一覧

利用しているカーネル一覧は以下のコマンドで確認できる。

!jupyter kernelspec list
Available kernels:
  julia-1.7              /Users/hiroshi.wayama/Library/Jupyter/kernels/julia-1.7
  lgbm                   /Users/hiroshi.wayama/Library/Jupyter/kernels/lgbm
  lgbm2                  /Users/hiroshi.wayama/Library/Jupyter/kernels/lgbm2
  my_environment_name    /Users/hiroshi.wayama/Library/Jupyter/kernels/my_environment_name
  reco_base              /Users/hiroshi.wayama/Library/Jupyter/kernels/reco_base
  python3                /Users/hiroshi.wayama/anaconda3/share/jupyter/kernels/python3

カーネルの設定ファイル

~/Library/Jupyter/kernels/にそれぞれのカーネルの設定ファイルが保存されている。 この中でlgbm2をカーネルとして設定している。

!ls -alh /Users/hiroshi.wayama/Library/Jupyter/kernels/
total 0
drwxr-xr-x  7 hiroshi.wayama  staff   224B  2  7 17:18 .
drwxr-xr-x  8 hiroshi.wayama  staff   256B  2  7 19:04 ..
drwxr-xr-x  5 hiroshi.wayama  staff   160B 12  8 10:18 julia-1.7
drwxr-xr-x  5 hiroshi.wayama  staff   160B  2  7 17:18 lgbm
drwxr-xr-x  5 hiroshi.wayama  staff   160B  2  7 16:04 lgbm2
drwxr-xr-x  5 hiroshi.wayama  staff   160B  8 24 00:09 my_environment_name
drwxr-xr-x  5 hiroshi.wayama  staff   160B  8 24 09:25 reco_base

この中でlgbm2をカーネルとして設定しているがうまくいかない。そのファイルを開いてみる。

!cat /Users/hiroshi.wayama/Library/Jupyter/kernels/lgbm/kernel.json
{
 "argv": [
  "/Users/hiroshi.wayama/anaconda3/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "lgbm",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

pythonへのパスがデフォルトの/Users/hiroshi.wayama/anaconda3/bin/pythonとなっており、想定していた/Users/hiroshi.wayama/anaconda3/envs/lgbm/bin/pythonではないことが分かる。 うまくいっているlgbm2を開いてみる。想定通り設定されていることが分かる。

!cat /Users/hiroshi.wayama/Library/Jupyter/kernels/lgbm2/kernel.json
{
 "argv": [
  "/Users/hiroshi.wayama/anaconda3/envs/lgbm2/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "python-lgbm2",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

パスの部分を利用したい環境のpythonパスに書き換えるとうまくいった。 あまりこういう所で時間を取られたくないので覚えておく。