Python の環境として Anaconda を利用していて、Jupyter Notebook を用いて開発をしている際に ModuleNotFoundError: No module named ‘xxxxxxxx’ が出力されたので、そのトラブルシュートを残します。
事象
Anaconda で次のように仮想環境を作り、作成した仮想環境を activate。 その後、必要なライブラリを pip でインストールして Jupyter Notebook を起動しました。
$ conda create -n myenv python=3.6
$ source activate myenv
$ pip install xxxxxxxx
$ jupyter notebook
しかし、import 文を書いただけで ModuleNotFoundError: No module named ‘xxxxxxxx’ が発生しました。
原因
調査方法はあとで書くとして、先に原因を書くと、作成した環境に jupyter がインストールしていなかったので、root 環境の jupyter を起動していたためでした。 ちゃんと activate したあとに jupyter をインストールしてあげていれば起きない問題でした。
$ conda create -n myenv python=3.6
$ source activate myenv
$ conda install jupyter ← これを忘れていたので、root の jupyter が使われてしまった
$ pip install xxxxxxxx
$ jupyter notebook
本当に凡ミスです。
原因分析方法
このエラーの理由を調べるために、次の例のように、エラーが出てしまう import 文よりも前で sys.path を表示させました。 import は、この sys.path に表示されたパスを順番に参照するためです。
import sys
print(sys.path)
import xxxxxxxx ←本来呼び出したかった import
これで表示されたパスを確認したところ、新しく作成した仮想環境が含まれておらず root 環境だけがパスにあったために気づきました。 このトラブルシューティング方法は他のエラー発生時にも利用できそうですので覚えていて損はなさそうです。
おわりに
本稿では Anaconda の Jupyter Notebook で ModuleNotFoundError が発生した際のトラブルシュートについて解説しました。