見出し画像

【IT】Azure App Serviceのディプロイエラー(ModuleNotFoundError)

皆さま
こんにちは

Azure App ServiceへDjangoをディプロイ時の
エラー対応忘備録です。

ディプロイ時に以下のエラーが出てApp Serviceが起動しません。
SSHの画面すら起動ませんでした。

10:15:00 PM TestServiceXXXX: 1. Traceback (most recent call last):\n  
File "/tmp/xxxxxxxxxxxxx/manage.py", line 22, in <module>\n    
main()\n  File "/tmp/xxxxxxxxxxxxx/manage.py", line 18, in main\n    
execute_from_command_line(sys.argv)\n  
File "/tmp/xxxxxxxxxxxxx/antenv/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line\n
utility.execute()\n  
File "/tmp/xxxxxxxxxxxxx/antenv/lib/python3.11/site-packages/django/core/management/__init__.py", line 420, in execute\n    
django.setup()\n  
File "/tmp/xxxxxxxxxxxxx/antenv/lib/python3.11/site-packages/django/__init__.py", line 24, in setup\n    
apps.populate(settings.INSTALLED_APPS)\n  
File "/tmp/xxxxxxxxxxxxx/antenv/lib/python3.11/site-packages/django/apps/registry.py", line 91, in populate\n    
app_config = AppConfig.create(entry)\n                 ^^^^^^^^^^^^^^^^^^^^^^^\n  
File "/tmp/xxxxxxxxxxxxx/antenv/lib/python3.11/site-packages/django/apps/config.py", line 193, in create\n    
import_module(entry)\n  
File "/tmp/oryx/platforms/python/3.11.0/lib/python3.11/importlib/__init__.py", line 126, in import_module\n    
return _bootstrap._gcd_import(name[level:], package, level)\n           
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import\n  
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load\n  
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked\n
ModuleNotFoundError: No module named 'django_cleanup'  
10:15:00 PM TestServiceXXXX: -  Next Steps: Please review message
10:15:00 PM TestServiceXXXX: -  For more details you can browse to https://aka.ms/troubleshoot-python
10:15:01 PM TestServiceXXXX: Triggering recycle (preview mode disabled).
10:15:01 PM TestServiceXXXX: Deployment successful. deployer = ms-azuretools-vscode deploymentPath = ZipDeploy. Extract zip.
10:15:15 PM: Deployment to "TestServiceXXXX" completed.
10:15:58 PM: "TestServiceXXXX" reported a critical error: Exception

”No module”とありますので
再度「pip freeze >requirements.txt」を
実施しますが、改善されません。

参照サイトを確認します。

上記ページより

「ModuleNotFoundError when app starts
If you see an error like ModuleNotFoundError: No module named 'example', then Python couldn't find one or more of your modules when the application started. This error most often occurs if you deploy your virtual environment with your code. Virtual environments aren't portable, so a virtual environment shouldn't be deployed with your application code. Instead, let Oryx create a virtual environment and install your packages on the web app by creating an app setting, SCM_DO_BUILD_DURING_DEPLOYMENT, and setting it to 1. This setting will force Oryx to install your packages whenever you deploy to App Service. For more information, please see this article on virtual environment portability.」

英語翻訳
「アプリ起動時の ModuleNotFoundError
のようなエラーが表示される場合ModuleNotFoundError: No module named 'example'、Python はアプリケーションの起動時に 1 つ以上のモジュールを見つけることができませんでした。このエラーは、コードを使用して仮想環境をデプロイする場合に最もよく発生します。仮想環境は移植可能ではないため、仮想環境をアプリケーション コードと共にデプロイしないでください。代わりに、Oryx に仮想環境を作成させ、アプリ設定 を作成し、SCM_DO_BUILD_DURING_DEPLOYMENTそれを に設定することで、Web アプリにパッケージをインストールします1。この設定により、App Service にデプロイするたびに Oryx によってパッケージがインストールされます。詳細については、仮想環境の移植性に関するこの記事を参照してください。

上記を参考にAppServiceのアプリ管理画面の「構成」より
「新しいアプケーション設定」を選択して

名前:SCM_DO_BUILD_DURING_DEPLOYMENT
値:1
でOK押します。

次に保存ボタンを押して反映します。
(注意:アプリが再起動されます)

無事、画面が表示されました。


では

この記事が気に入ったらサポートをしてみませんか?