起きたこと
condaのbase環境が起動している状態(下写真)でvenvを利用して仮想環境test_envを作成、起動し、必要なライブラリをインストールした。その後、jupyter でも使えるように、pip install ipykernel
とipython kernel install --user --name=test_env
をして、jupyter上にカーネルを追加した。
その後、jupyter notebookを起動し、カーネルをtest_envに選択し、import ライブラリ名
を実行すると(ここではtorchinfo)Module not found: torchinfo
と出た。
原因と解消方法
いろいろ検証してみると、torchがbase環境上にあるバージョンのものを指定していたので、おそらく追加したカーネルがbase環境で覆われてしまっているのではないかと考えた。さらに検証した結果、以下のような回避方法があることがわかった。
-
最初の仮想環境作成前に、
conda deactivate base
か何かでbase環境を終了させた上で、コンピュータ上にある別のpythonにあるvenvで仮想環境を作成する- こうした場合は、base環境上が起動している状態で起動して、上記の手順を踏んだとしても(また後者の手順を踏んだとしても)、jupyter 上で正しくカーネルが認識された
-
仮想環境作成時に、base環境が起動している状態で作成してしまった場合、仮想環境上で、base環境を終了させた上で
ipython kernel install --user --name=test_env
を実行する。- こうした場合は仮にbase環境が起動している状態で作成してしまったとしてもjupyter 上で正しくカーネルが認識された。今回はこちらで解決させた
結論
base環境上でvenvするな