Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
160 views
in Technique[技术] by (71.8m points)

python - Couldn't find WSGI module deploying Heroku

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...