anacondaを使った仮想環境上のjupyterがmoduleをimportできない問題の解決 / jupyter上で環境を切り替える
起こった問題
- condaで作った仮想環境上であるパッケージ(lightgbm)をインストールした
- コマンドライン上で起動したpython環境では動く
- がjupyter notebook上からはそのようなmoduleはないと言われた
要は入れたはずのライブラリがnotebookからインポートできないという状況になりました。
原因
- 仮想環境上にはjupyterを入れてなかった
- base環境のjupyterが起動し,仮想環境上でのライブラリ追加が
解決策
したがって簡単なことですが,これだけです。
- 仮想環境上にjupyter notebookを入れる。
conda install jupyter notebook
余談ですが,juptyerのnotebook上でも戦闘に!
をつけた行はコマンドライン上の入力として実行されるので,notebook上で
!pip install ~~
と実行しても良いです。
ただし,condaはyes/noの入力が必要になるので
!echo y|conda install ~~
とすること。
注意点:condaとpipをまぜるな
anacondaとpipでは扱うパッケージの形式が異なり,混ぜると環境を壊す恐れがあります。
https://insilico-notebook.com/conda-pip-install/
jupyter上で仮想環境を切り替えられるようにする
バクを調べてる時に知ったのですが,jupyer上でKernel→Change Kernelの欄から仮想環境を切り替えることができて非常に便利です。
手順概略
手順は,
- base環境で,
pip install environment_kernels
jupyter notebook --generate-config
で.jupyter以下に設定を作成(すでに出ている場合は変更なし)- 生成される
jupyter_notebook_config.py
に下記を追記
c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager' c.EnvironmentKernelSpecManager.env_dirs=['C:/Program Files/Anaconda3/envs/'] # envsが保存されている場所
最後に使いたい環境にjupyterを入れpip install environment_kernels
を実行で完了です。
condaとpipをまぜるなといったそばからこれですが,environment_kernelsをcondaで入れている文献を見てないので仕方なくやってます。 best solutionでないのは確か。
ハマリぽいんと
3つ目の手順でenvsが保存されている場所というのが厄介で,windows機の場合,\
をエスケープする必要があります。
したがって,わたしの場合は
c.EnvironmentKernelSpecManager.conda_env_dirs = [ 'C:\\Users\\username\\AppData\\Local\\conda\\conda\\envs\\' ]
としなくてはいけませんでした。あと,最後に仮想環境上でのpip installを忘れないようにというのもポイントです。
これができると,環境ごとにコマンドプロンプトを立ち上げなくていいので気持ちが楽になります。