概要
Pythonの入門書などで統合開発環境のIDLEを使用することが多いので、実際に利用されている方も多いと思います。
本記事はHTTP通信用のライブラリであるrequestsをインポートしたときにエラーがでる場合の対処法についてまとめました。
なお、本記事を読めばrequestsに限らずインポートするときに出る同様のエラーは解決できると思います。
私は「退屈なことはPythonにやらせよう」のワークでこの問題に直面しました。
問題
“import requests”とIDLEのインタラクティブシェルに入力した際に、“ModuleNotFoundError”エラーが発生することが今回の問題です。
私の場合はターミナルでrequestsモジュールをインストールしてあるにも関わらず発生しました。
環境
- パソコン:Macbook Air M1チップ
解決法
requestモジュールはPython付属ではないので、インストールする必要があります。
ターミナルを開き、”pip install requests”と入力して実行してください。
requestsモジュールをインストールできたら、IDLEを開き、インタラクティブシェルに”import requests”と入力し、実行してください。
エラーメッセージが表示されなければ、requestsモジュールは正しくインストールされています。
しかし、私はそれでもエラーメッセージが発生しました。
次に確認すべきことは、本当にrequestsモジュールがインストールされているかどうかです。
ターミナルで”pip list”と入力して実行してください。
次に確認すべきはターミナルでインストールしたPythonとIDLEに入っているPythonのバージョンが合っているか確認することです。
インストールされていれば、”requests”とそのバージョンが出力されます。
ターミナルでrequestsモジュールがインストールされていることを確認したうえで、IDLEでエラーが発生する場合はIDLEが参照するパスを確認していきます。
IDLEで下記の通り入力して実行してください。
import sys
sys.path
実行するとIDLEが参照しているパスが出力されます。
次に、ターミナルで”pip show requests”と入力してください。
Locationと記載されているところにrequestsモジュールが保存されているパスが出力されます。
ここでIDLEがrequestsモジュールが保存されているパスを参照していないことが分かります。(この場合はそもそもPythonのバージョンが異なっていました。)
この問題を解決するために、IDLEで下記の通り入力して実行してください。
import sys
sys.path.append(‘ターミナルのLocation以降’)
#上記の場合は ‘/Users/ユーザー名/anaconda3/lib/python3.10/site-packages’
ここまで実行したら、再度IDLEでimport requestsと入力して実行してください。
実行してエラーメッセージが出なければ成功です。
まとめ
最終的に原因はPythonのバージョンが異なっていたことですが、パソコン次第では最新版で動作しないなどの可能性があるため、この現象は起こりうると思います。
また、解決方法がパスの確認なので、requestsモジュールに限らず他のモジュールでエラーが発生した場合にも応用できます。
Pythonを使い始めた当初はこのようなエラーに頭を悩ますことが多いので、ひとつずつ解決していきましょう。
本記事がその助けになれればと思います。
コメント