こんにちは、PyQサポートです。
今回は ModuleNotFoundError: No module named 'requests'
というエラーの意味と、その解決方法を解説します。
また、他のModuleNotFoundError
についても解説します。
- 質問:スクレイピングのコードを書いたのですが、実行すると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
でライブラリーをインストールしてください。 - パスが通っていない場所にライブラリーがある場合は、パスを通してください。