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

python
1

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

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

 

原因

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

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

 

対処法

module名を間違えている場合

>>> import nupmy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'nupmy'

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

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

 

ライブラリが無い場合

>>> import pydrive
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pydrive'

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

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

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

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

$ pip install pydrive

 

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

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

# 以下のようなフォルダ構成
src
- run.py
- hoge
-- test.py

# run.pyで以下のようにtest.pyをimportする
import test.py

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

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

import hoge.test

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

$ python src/run.py

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

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

import sys
sys.path.append('/path/to/dir')

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

 

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

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

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

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

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

 

pythonを学べる教科書

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

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

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

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

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

python
AI入門:文系のプログラミングはPythonから始めるのがオススメ!

AIビジネスが流行する中、プログラミングができないことを負い目に感じている文系出身の社会人、文系の学 …

python
【pythonエラー対処法】TypeError: hoge() takes 0 positional arguments but 1 was given

HelloWorldから始まり、FizzBuzzと順調にPythonのサンプルコードを完成させていく …

Twitter
1
ビジネスや研究でTwitterを分析・活用したい人が注意するべきポイント

商品やイベントのマーケティングや、ニーズの把握のためにTwitterを活用したいと考えている人は多い …