目的
virtualenvwrapperを用いて作成した仮想環境をjupyterで利用するために必要な手順をまとめました.
(仮想環境の作成部はvirtualenvやvenvで行っても問題ありません.ただ,ここではvirtualenvwrapperのコマンドのみを記載します.)
(ここではjupyter notebookを扱っていますが,jupyter labなどでも同様の手順でカーネル追加できるはずです.)
想定環境
- (何らかの環境に)jupyter (notebook) がインストール済
- virtualenvがインストール済
- virtualenvwrapperがインストール済
手順
仮想環境の作成
root環境のインストール済パッケージを用いる場合
$ mkvirtualenv --system-site-packages --python=python3 hoge_env
root環境のインストール済パッケージを用いない場合
$ mkvirtualenv --no-site-packages --python=python3 hoge_env
仮想環境へのipykernel
のインストール
もし仮想環境に入っていない場合は,仮想環境に入ります.
$ workon hoge_env
その後,ipykernel
をインストールします.
(hoge_env) $ pip install ipykernel
jupyterへのカーネル追加
(hoge_env) $ ipython kernel install --user --name=hoge_env
Installed kernelspec hoge_env in <new kernel path>
カーネル追加の確認
カーネルに追加できているか確認する場合,jupyter notebookを立ち上げる環境(自分の場合root環境)でカーネルのリストを確認します.
$ jupyter kernelspec list
Available kernels:
hoge_env <kernel_dir_path>
...
この<kernel_dir_path>
はカーネルの情報が格納されたJupyterによって作成されたディレクトリです.
また,正しく想定した仮想環境のカーネルが追加されているかどうか確認するためには,各カーネルのディレクトリ内にあるkernel.json
を確認します.
{
"argv": [
"<home_path>/.virtualenvs/hoge_env/bin/python3.6",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "hoge_env",
"language": "python"
}
この"argv"
の一行目はkernelの実行に使う環境のpythonのパスを表しており,環境<home_path>/.virtualenvs/hoge_env/
がkernelに追加しようとした仮想環境と一致しているかどうか確認してください.
kernel.json
に記されたpythonのパスの環境が追加したい仮想環境と異なる場合
kernel.json
に登録されるpythonのパスは,先ほど
(hoge_env) $ipython kernel install ...
と実行した際にipythonが依存するpythonのパスとなります.
そのため,カーネル登録に用いるipython
が正しく仮想環境にインストールされたipython
であることを確認してください.
(hoge_env) $ which ipython
# OK: <home_path>/.virtualenvs/hoge_env/bin/ipython
# NG: /usr/local/bin/ipython
このような症状は,新しく仮想環境を作成した際に新たにipykernel
のインストール
(hoge_env) $ pip install ipykernel
をし忘れた場合に起こりがちです.
jupyter notebookの起動
jupyterを起動したい環境でjupyter notebookを起動します.
$ jupyter notebook
以上の手順で,各notebookからKernel -> Change kernel
で仮想環境も指定できるようになっているはずです.
(番外編)
jupyterからのカーネルの削除
カーネル追加の確認と同じ手順でjupyterに追加されたカーネルのディレクトリ(<kernel_dir_path
)を調べ,そのディレクトリを削除するだけでOKです.
作成した仮想環境の削除
一旦
(hoge_env) $ deactivate
によって仮想環境から抜けた後,
$ rmvirtualenv hoge_enc
で仮想環境が保存されたディレクトリを削除します.