Couldn't find WSGI module deploying Heroku

谁都会走 提交于 2019-12-13 20:21:37

问题


Trying to deploy my app with this tutorial. Have a ModuleNotFoundError: No module named 'radio.wsgi' message.

2019-08-21T08:08:21.409841+00:00 app[web.1]: __import__(module)
2019-08-21T08:08:21.409849+00:00 app[web.1]: ModuleNotFoundError: No module named 'radio.wsgi'
2019-08-21T08:08:21.409960+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-08-21T08:08:21.441211+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Shutting down: Master
2019-08-21T08:08:21.441415+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Reason: Worker failed to boot.

In some other questions people recomends python manage.py run_gunicorn but I have Unknown command: 'run_gunicorn'

Procfile:

web: gunicorn radio.wsgi --log-file -

wsgi.py

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'radio.settings')
application = get_wsgi_application()

In only those files WSGI is mentioned.

requirements.txt

dj-database-url==0.5.0
Django==2.2.4
gunicorn==19.9.0
lxml==4.4.1
psycopg2-binary==2.8.3
pytz==2019.2
sqlparse==0.3.0
whitenoise==4.1.3

This is project structure

├── radio
│   ├── db.sqlite3
│   ├── manage.py
│   ├── player
│   ├── radio
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── setup.py
│   └── static
├── README.md
├── .gitignore
├── requirements.txt
├── runtime.txt
└── Procfile

回答1:


Heroku expects Procfile to be in the project root. It is easiest to deploy a Django app if manage.py is in the project root as well. For example, if your project layout was:

├── db.sqlite3
├── manage.py
├── player
├── radio
│   ├── __init__.py
│   ├── __pycache__
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── setup.py
├── static
├── README.md
├── .gitignore
├── requirements.txt
├── runtime.txt
└── Procfile

then you can run:

web: gunicorn radio.wsgi

In your case, your Django project is in the radio directoy. If you don't want to change the project layout, then you need to add radio to the python path so that python imports work:

web: gunicorn --pythonpath radio radio.wsgi



回答2:


After login from terminal using heroku login by downloading Heroku CLI, you can deploy on heroku using git by following:

git init
git add .
heroku create <app_name> --region <region_name>
git commit -am "SOME MESSAGE"
heroku config:set DEBUG_COLLECTSTATIC=1
heroku ps:scale web=1    // (optional)
git push heroku master

The ideal project structure shuold be like this...

   radio
   ├── db.sqlite3
   ├── manage.py
   ├── player
   ├── radio
   │   ├── __init__.py
   │   ├── settings.py
   │   ├── urls.py
   │   └── wsgi.py
   ├── setup.py
   ├── static
   ├── README.md
   ├── requirements.txt
   ├── runtime.txt
   └── Procfile


来源:https://stackoverflow.com/questions/57587490/couldnt-find-wsgi-module-deploying-heroku

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!