PythonアプリをHerokuにデプロイしてたら遭遇した「ModuleNotFoundError: No module named 'xxx'」というエラー。
$ heroku logs ... 2018-05-13T02:30:45.743840+00:00 app[scheduler.6642]: File "/app/service/rss_service.py", line 1, in <module> 2018-05-13T02:30:45.743977+00:00 app[scheduler.6642]: import feedparser 2018-05-13T02:30:45.744003+00:00 app[scheduler.6642]: ModuleNotFoundError: No module named 'feedparser'
moduleをLocal(手元のPC環境)ではpipを使ってインストールしたから手元では動いていたけど、Herokuではmoduleがインポートされていなくてエラーになっていた。
Herokuにデプロイしている「requirements.txt」ファイルを確認すると、「xxx」が含まれていなかったので、freezeを使って以下のコマンドで含める。
$ pip freeze > requirement.txt
これで手元のimportしているモジュールの種類とバージョンは指定できた。Herokuに最新の変更をデプロイし、アプリケーションを再起動します。
$ git add . $ git commit -m "コミットメッセージ" $ git push heroku master $ heroku restart
これで「ModuleNotFoundError: No module named 'xxx'」エラーは解決できた。
Localでは動くのにHerokuではmoduleが見つからないという場合は今回の原因でエラーになっていることが多そう。学びになった。
Pythonをしっかり学びたい方向け
最後に、Pythonをしっかり学びたいという方向けにおすすめの学習ツールを紹介しておきます。
スッキリわかるPython入門 スッキリわかるシリーズ
そもそもPythonの書き方が分からないという方はこちら、安いし分かりやすいのでオススメです。
プログラミング言語 Python 3 入門
このコースで学べること
- Pythonの基礎(データ、制御フロー、関数、データ構造、モジュール、例外(エラー)、クラス、入力と出力、標準ライブラリ)
- ターミナルを使用したPythonの実行
- PyCharmを使用したPython ファイルの作成・デバッグ実行
Pythonの基礎の基礎が丁寧に開設されていて、Python初心者の方でもPythonへの理解が深まりやすいUdemyのコースです。
Pythonの仕組みを基礎からしっかりと理解しておきたい方にオススメです。
【プログラミング言語 Python 3 入門】をUdemyで見てみる
Pythonで作業の自動化・効率化
Pythonでのプログラミング学習中の方向けに、Noteでより詳細なプログラミングチュートリアルを配信しているので、そちらもチェックしてみてください( ・v・)/
では!