はじめに

Anaconda の環境登録などはせず,pyenv の環境を Jupyter の kernel として登録する時のメモです.
用途としては,python3系の中でバージョンを細かく分けたいときなどです.
Anaconda の仮想環境登録をする場合はこちらを参照.

コマンド一発で

python -m ipykernel install --user --name={name} --display-name={display-name}

name,display-name は既存のものと被らないように適宜設定.

手順

手元で python 3.7.4 の環境を登録した時の手順です.他のバージョンを登録する場合は適宜変更して下さい.
pyenv のインストール方法はこちらの記事が丁寧に書いてくれています.
→ pyenv を用いた Python3 インストール

まず,追加したい version の pyenv に切り替える.

$ pyenv global 3.7.4

pyenv が切り替わっていることを確認する.

$ pyenv versions
  system
  3.6.5
* 3.7.4 (set by /home/user/.pyenv/version)

jupyter で現在登録されている kernel を確認する.

$ jupyter kernelspec list
Available kernels:
  python3    /home/user/.local/share/jupyter/kernels/python3
  python2    /usr/local/share/jupyter/kernels/python

以下のコマンドで現在の pyenv 環境を jupyter に登録する.

$ python -m ipykernel install --user --name=python3.7.4 --display-name=python3.7.4
Installed kernelspec python3.7.4 in /home/user/.local/share/jupyter/kernels/python3.7.4

name, display-name を適宜設定する.

name は kernel の情報が入るディレクトリの名前,display-name は jupyter でカーネルを選択するときの表示名になる.

name では version の指定は行っておらず,現在の環境を登録するだけという点に注意!

$ jupyter kernelspec list
Available kernels:
  python3.7.4    /home/user/.local/share/jupyter/kernels/python3.7.4
  python3        /home/user/.pyenv/versions/3.7.4/share/jupyter/kernels/python3
  python2        /usr/local/share/jupyter/kernels/python2

無事に現在の環境が jupyter のカーネルに登録できました.
左側に出てくる kernel の名前は先ほどつけた name になっています.(display-name はあくまで Jupyter上での名前)

kernel の削除

間違えて登録した時は,以下のようにアンインストール出来ます.

$ jupyter kernelspec uninstall python3.7.4

うまく行かない時は

先ほど登録した kernel のディレクトリの kernel.json というファイルを確認する.

$ cat /home/user/.local/share/jupyter/kernels/python3.7.4/kernel.json 
{
 "argv": [
  "/home/user/.pyenv/versions/3.7.4/bin/python3",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python3.7.4",
 "language": "python"
}

“/home/user/.pyenv/versions/3.7.4/bin/python3” が正しく指定出来ているかどうか確認してみる.
ここでのバージョンの指定が間違っていると,nameやdisplay_name があっていても所望のバージョンにならない.

参考

    Jupyterで複数カーネルを簡単に選択するための設定
广告
将在 10 秒后关闭
bannerAds