Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【Pythonお悩み解決】`ModuleNotFoundError: No module named 'requests'`の解決方法を教えてください

こんにちは、PyQサポートです。
今回は ModuleNotFoundError: No module named 'requests' というエラーの意味と、その解決方法を解説します。
また、他のModuleNotFoundErrorについても解説します。

質問:スクレイピングのコードを書いたのですが、実行するとModuleNotFoundError: No module named 'requests'となります。解決方法を教えてください

入力した内容(コード)

import requests
...

出たエラー(実行結果)

Python 3.10 で実行した結果

  File "<stdin>", line 1
    import requests
ModuleNotFoundError: No module named 'requests'

回答:必要なライブラリーをインストールします

コマンドプロンプトで、下記のように必要なライブラリーをインストールすることで解決します。

pip install requests

ModuleNotFoundError: No module named 'requests'は、requestsという名前のモジュールがない、というエラーです。
requestsはスクレイピングでよく使われるライブラリーですが、標準ライブラリーではないため上記のようにインストールが必要です。
requestsは、pypi.orgで公開されているライブラリーです。
pypi.orgで公開されているライブラリーは、上記のようにpipコマンドでインストールできます。

問題なくpipでインストールできると、下記のようにしてライブラリーの詳細を確認できます。

pip show requests

実行結果

Name: requests
Version: 2.27.1
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /usr/local/var/pyenv/versions/3.10.4/lib/python3.10/site-packages
Requires: certifi, chardet, idna, urllib3
Required-by:

上記の結果は、使用しているOS、Pythonやライブラリーのバージョンによって変わります。

pipコマンドについては、「Python モジュールのインストール - Python ドキュメント」も参考にしてみてください。

なお、モジュールとはPythonのファイルを読み込んだものです。
モジュールを読み込むことをインポートといい、下記のようにしてインポートできます。

# モジュールのインポート
import requests

# モジュールの中の一部の関数などをインポート
from requests import 使いたい関数など

また、インストールしたときに、モジュール名/__init__.pyという構成で提供されるものをパッケージといいます。
このブログではモジュールやパッケージを総称してライブラリーと呼んでいます。

他のModuleNotFoundErrorの解決方法

今回はrequestsライブラリーのエラーでしたが、他のライブラリーでも同様のエラーが起こる可能性があります。
ここでは、もう少し一般的な場合のエラーの解決方法を紹介します。

名前の間違い

たとえば、beautifulsoup4というライブラリーがありますが、これを下記のようにインポートするとModuleNotFoundErrorになります。

import beautifulsoup4

実行結果

  File "<stdin>", line 1
    import beautifulsoup4
ModuleNotFoundError: No module named 'beautifulsoup4'

これは、インポートで使う名前が間違っているからです。
beautifulsoup4ライブラリーをインポートするときは、下記のようにします。

import bs4

ライブラリー名とインポートで使う名前が異なることがあります。
利用するときはライブラリーのドキュメントを確認しましょう。
あるいは、スペルミスの場合も同様のエラーになるので、正しいスペルで記述する必要があります。

ライブラリーが未インストール

最初に説明したrequestsと同様のケースです。
pipでインストールすることで解決します。
なお、非公開のライブラリーの場合は、pip install ライブラリー名ではインストールできません。
その場合は、別途インストーラーのファイルを入手して、pip install インストーラーのファイルとする必要があります。

パスが通っていない場合

別フォルダーの自作のライブラリーを利用しようとしていて、パスが通ってない場合にModuleNotFoundErrorになることがあります。
その場合は、パスを通すことで解消します。
パスを通す方法はいろいろありますが、環境に依存するためここでは省略します。

まとめ

ModuleNotFoundError: No module named ***となった場合は、下記の解決方法があります。

  • インポートする名前が正しくない場合は、正しい名前を使用してください。
  • ライブラリーが未インストールの場合は、pipでライブラリーをインストールしてください。
  • パスが通っていない場所にライブラリーがある場合は、パスを通してください。
Copyright ©2017- BeProud Inc. All rights reserved.