Condaで作ってる仮想環境の切り替えをJupyter上で簡単に行う方法

  • 47
    いいね
  • 2
    コメント

最近、Pythonを触ってるんですが、環境構築だけでも新旧いろんなやり方、いろんな情報がネット上にありすぎてちょいちょい苦戦してました。

Pythonの仮想環境構築で一番良さそうだったCondaを使って作ってたんですが、最近流行りのJupyterと合わせて使おうとした時、仮想環境のカーネルの切り替えがうまくできなくてハマってしまったので、やり方について備忘録的に残しておきます。

うまくいくと、以下のようにJupiterの[Kernel] -> [Change kernel]から開発環境を一瞬で切り替えられるようになるので、かなり便利になります!!
image

前提:

CondaとJupyterがインストール済み

numpyの動く環境をcondaで作成

$ conda create -n numpyenv python=3.5 numpy jupyter

作る仮想環境の方にも必ずjupyterをインストールする必要があります。

作られた仮想環境を確認

$ conda info -e
Using Anaconda Cloud api site https://api.anaconda.org
# conda environments:
#
numpyenv                 /Users/username/anaconda/envs/numpyenv
opencvenv                /Users/username/anaconda/envs/opencvenv
py35                     /Users/username/anaconda/envs/py35
root                  *  /Users/username/anaconda

numpyenvという環境が作られていることが確認できます。

jupyter_environment_kernelsのインストール

Jupyter上でカーネルを切り替えるためのパッケージが提供されてるのでそれをインストール。

$ pip install environment_kernels

Jupyterの設定ファイル生成

※すでに作成している場合は作らなくて大丈夫です。

$ jupyter notebook --generate-config

おそらく
~/.jupyter/jupyter_notebook_config.py
という設定ファイルが生成されているかと思います。

自動でConda環境を読み込む設定追記

~/.jupyter/jupyter_notebook_config.pyに下記を追記します。(注意:古い可能性あり)

c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.env_dirs=['/Users/username/anaconda/envs/']

(※追記:2016/12/09)
コメントでいただいているように最新のバージョンでは、下記の一行のみで大丈夫になっているようです。

c.EnvironmentKernelSpecManager.conda_env_dirs = [ '/Users/username/anaconda/envs/' ]

conda_env_dirsにはconda info -eなどで仮想環境が生成されているパスを確認して適宜設定してください。

動作確認

$ jupyter notebook

Jupyterを起動すると無事にnumpyenvという新しいカーネルが選択できるようになっているのが確認できるかと思います。
image

参考:
[Python]Anacondaで仮想環境を作る
Cadair/jupyter_environment_kernels
Jupyter Notebook and Conda