Anaconda の Jupyter Notebook で ModuleNotFoundError が発生した場合のトラブルシュート

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 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 が発生した際のトラブルシュートについて解説しました。

Python入門トップページへ戻る

Pythonのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca