Anacondaで作った仮想環境をJupyter Notebookで使う方法



◇はじめに

Anaconda Navigatorで作った仮想環境でJupyter Notebookを使おうと思ったんだけど、
Jupyter Notebookを起動できないし、Jupyter Notebookから仮想環境(kernel)を切り替えることもできなかったので方法を探ってみた。

Navigatorから作る方法はいまいち見つからず、
しかも、Anaconda Navigatorだと、仮想環境がユーザーフォルダの下に作られてしまい、ユーザー名が日本語だと、正常動作しないコマンド等があるみたい。

最終的にコンソール(Anaconda Prompt)から作る方法を見つけ、それで成功したのでここにまとめておく。



注意)

基本的に以下サイトに乗っていることを、私側で実現できるようにまとめたものなので、こちらを読んだ方がよいかもしれません
https://qiita.com/yoppe/items/38005f415a5b8b884c7d

Jupyterの設定ファイル生成のところに、
最新版では
c.EnvironmentKernelSpecManager.env_dirs=〜〜〜
の一行で大丈夫と書いているが、環境によっては以下も必要だった
(=古い可能性ありの方)

c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'

あと、上記には書かれていないけれど、仮想環境を作るたびに、
作った仮想環境で pip install jupyter が必要です。
(base環境にインストールされてたら不要かもしれませんが)



◇前提条件

・Anaconda 3.x系がインストールされていること
・OS:Windows 10



◇アップデート 

※最新をインストールしたなら無視してOK

少し古い環境なので以下を参考にしてアップデートした。

https://qiita.com/kznx/items/79d5b122a2eb0ab91067




◇仮想環境を作成

1.管理者権限で「Anaconda Prompt」を起動する(base環境で起動する)

2.pipをupdate

python -m pip install --upgrade pip

この次の「jupyter_environment_kernels」をやるためには、pip ver 10.0.1が必要だったようだ

3.jupyter_environment_kernelsをインストール

以下コマンドを入力する。

pip install environment_kernels

4.jupyterの設定ファイルを作成

以下コマンドを入力する。

jupyter notebook --generate-config

5.Conda環境を読み込む設定追記

C:\Users\{ユーザー名}\.jupyter\jupyter_notebook_config.py
を開き、以下を追加する

c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.env_dirs=['C:/Program Files/Anaconda3/envs/']

※「C:/Program Files/Anaconda3/envs/」は仮想環境のフォルダ。ユーザーフォルダの場合がある。

6.仮想環境を作る

以下コマンドを打つ

conda create -n ml_test python=3.7

※仮想環境の名前:ml_test
pythonのバージョン:3.7

base環境はpython 3.6.6だがそれより新しい仮想環境作れるんですね。びっくり

実行中にProceed ([y]|n)?と聞かれるのでy

補足)
以下コマンドを実行すると、作成済み仮想環境一覧が見える

conda info -e

7.作成した仮想環境に切り替える

以下コマンドを打つ

activate ml_test 

8.jupyter notebookをインストール

pip install jupyter


9.コンソールを終了させる

10.jupyter notebookを起動させ、ipynbファイルを開く
メニュー→kernel→Change kernel→ 作成した仮想環境が選択できるように!

※これ以降に仮想環境を追加する場合は
6〜8の手順を行う必要があります。