前提
久しぶりに機械学習のコードを書く機会が会ったので、Jupyter Notebookを起動しました。
下記のようにvenv環境でJupyter Notebookを立ち上げました。
# .venv をactivate $ cd workspace $ python -m venv .venv $ source .venv/bin/activate # jupyter install (.venv) pip install jupyter # add ipython kernel as myenv (.venv) ipython kernel install --user --name=myenv # start jupyter notebook (.venv) jupyter notebook
Jupyter NotebookのUIからカーネルmyenv
を選択すると良いそうです。
カーネルが切り換わらない場合
基本的には上記の設定のみで完結するようですが、自分の環境だとカーネルを切り替えても、.venv
にインストールしたモジュールを使用することができませんでした。
Jupyter Notebookのセル上で下記のコードを実行してみると、.venv
ではなくデフォルトのPythonが使われているようでした。
import sys sys.executable # '/usr/bin/python3'
そこで、先程ipython kernel install --user --name=myenv
で追加したカーネルの設定を見てみることにしました。
(.venv) jupyter kernelspec list Available kernels: myenv /home/gesogeso/.local/share/jupyter/kernels/myenv
そのディレクトリの中でkernelを表現しているファイルはkernel.json
ということが推測されました。
cat /home/gesogeso/.local/share/jupyter/kernels/myenv/kernel.json { "argv": [ "/usr/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "myenv", "language": "python", "metadata": { "debugger": true } }
argv
はJupyter NotebookでインタプリタとなるPythonをしているようでしたので、.venv
のPythonに変更しました。
cat /home/gesogeso/.local/share/jupyter/kernels/myenv/kernel.json { "argv": [ "/home/gesogeso/ghq/github.com/gesoges0/nba-jupyters/.venv/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "myenv", "language": "python", "metadata": { "debugger": true } }
再びJupyter Notebookを再起動してカーネルを選択し直したら、無事.venv
のモジュールのimportに成功することができました。