【python】ModuleNotFoundError: No module named ***の対処方法

python
1

pythonを書いていると幾度となく目にするエラー、”ModuleNotFoundError: No module named ***”の原因と対処法についてまとめます。

多くの場合、***に当たる名前のライブラリをpipインストールすることで解決します。

 

原因

このエラーは、importしようとしたmoduleが存在しないときに発生します。
moduleとは、”***.py”という名前のファイルを指します。

moduleが存在しない原因としては様々な理由が考えられますが、この記事では考えられうる4つの事例についての対処法を紹介します。

 

対処法

module名を間違えている場合

最初に確認するべきはmodule名の間違いです
pythonでよく用いるライブラリとしてnumpyがありますが、「nupmy」のような文字入れ替えタイポは案外気づきません。

もう一度確認してみましょう!

 

ライブラリが無い場合

次に、importしようとしたライブラリが存在しないというケースがあります。
これは冒頭でも紹介した、「よくある原因」です。

上の例では、Google Driveをpythonから使えるPyDriveというライブラリをimportしようとし、エラーが出ています。

この原因によるエラーなら、該当ライブラリをインストールすることで解決することができます

多くの場合、pip installによってライブラリをインストールすることができます。

 

自分で作ったファイルが読み込めない時

自分で作ったtest.pyなどをimportしようとしてエラーが出ている場合は、pythonを実行しているフォルダ内にtest.pyが存在するかを確認してください。

例えばこのような構成でsrcフォルダ内からrun.pyを実行しても、testをimportすることはできません。

この場合はrun.pyでのimportを以下のように書き替える必要があります。

また、srcフォルダよりも高い場所で以下のようにrun.pyを実行した場合も、同様のエラーが出ます。

これが結構盲点で、ハマったことがある方も多いのではないでしょうか。
実行する場合は、必ずrun.pyが存在するフォルダ内まで移動しましょう。

もしフォルダ外から実行したい場合は、各ファイルのimport文前に、以下を記述しておく必要があります。

ここで’/path/to/dir’にtest.pyまでの絶対パスを指定することで、どこから実行してもtest.pyをimportできるようになります

 

ライブラリが要求するライブラリが無い場合

最後に厄介な例をご紹介します。
あるパッケージが、内部でまた別のパッケージを要求するときに、同様のエラーが出ることがあります。

例えばchainerというパッケージはnumpyというパッケージを内部で呼び出します。

何らかの理由でnumpyだけがアンインストールされた後に、import chainerしてしまうと、”ModuleNotFoundError: No module named numpy”が発生します。

この場合も、pip installによって要求されているライブラリをインストールすることで解決することができます。

 

pythonを学べる教科書

初めてプログラミングの勉強をする場合、インターネットだけを見て独学することは非常に難しいと思います。

インターネットに存在する情報は体型だてられておらず、学習に向いているとは言えないためです。

着実な学習のためには、やはり学習のために用意された入門書に頼るのが一番です。

以下の記事ではやさしいpythonの入門書についてレビューを掲載していますので、是非参考にしてみて下さい!

関連:あなたに最適なpython独習の参考書は?各参考書の長所と短所をご紹介!

python
pickleでエラーならdillで保存する!【Python】

Pythonのpickleを使うと、いろいろなデータを保存出来て便利ですよね。 しかし、ファイルオブ …

python
1
【WP REST API解説】投稿を更新する(POST /posts/id)

Word PressのAPIを用いてすでに投稿されている記事を更新する方法について説明します。 あわ …

WordPress
ブロガー向け禁止語チェッカーを公開しました

こんにちは、mjmsです。 今回は先日公開した「禁止ワードチェッカー」についてご紹介します! 禁止ワ …