Azure で Python アプリを実行したら ModuleNotFoundError
多分すごく初歩的なミスなのだけれど、ハマったのでメモ。。
前提
↑のサイトを参考にAzureでPython Webアプリを作ってみている。
前回はローカルでPythonアプリの実行(Hello World)に成功。
Python アプリをローカルで実行してみた(インストール~Hello World! 実行)(Windows) - Notes
とりあえずローカルでやりたいことができたので、Azureにアップロードして動かしてみました。
(参考サイトの「アプリの参照」のところ)
※ちなみにソースコードは以下で、本記事記載時点では動作確認未完了です。どんなアプリなのかは別途をブログを投稿予定。
https://github.com/moncheyball/web-scraping
実行結果
アプリケーションエラー:( 。。。。
ホーム > App Service > web-scraping - ログ ストリーム からログを確認してみると、以下のようなエラーが出てました。
ModuleNotFoundError: No module named 'requests'
pythonファイル上で「import requests」をしているのですが、'requests'なんてモジュールはないよ、と言われています。
解決方法
さすがマイクロソフト先生、公式ページにしっかり書いてあります。
Python アプリを構成する - Azure App Service | Microsoft Docs
Django など、追加のパッケージをインストールするには、
pip freeze > requirements.txt
を使用して、お客様のプロジェクトのルートに requirements.txt ファイルを作成します。 次に、Git デプロイを使用してお客様のプロジェクトを App Service に公開します。これにより、コンテナー内でpip install -r requirements.txt
が自動的に実行され、お客様のアプリの依存関係がインストールされます。
requirements.txt 入れてなかった\(^o^)/
ローカルで実装した時は、requests の version 2.21.0 を利用したので(pip freeze コマンドで確認)、requirements.txt に「requests==2.21.0」を追記してAzure Cloud Shell の所定のディレクトリ(Azureの参考サイトの python-docs-hello-world と同じ場所)に入れて再度実行。
正常に動きました。
やっぱり特に知識もないまま、いらないと思ってファイルは削除しちゃダメだよな。
とりあえず動くところまで確認してからの、動作見ながら削除していくのが基本!・・・(反省)