仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・SNS分析・仮想通貨・自動化などに関してよく書きます。

【Pythonアプリ Herokuエラー解決】ModuleNotFoundError: No module named 'xxx'


f:id:virtual-surfer:20180513125956p:plain

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が見つからないという場合は今回の原因でエラーになっていることが多そう。学びになった。