找不到部署 Heroku 的 WSGI 模块
Couldn't find WSGI module deploying Heroku
正在尝试使用 this 教程部署我的应用程序。收到 ModuleNotFoundError: No module named 'radio.wsgi'
消息。
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.
在其他一些问题中,人们推荐 python manage.py run_gunicorn
但我有 Unknown command: 'run_gunicorn'
过程文件:
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()
只有那些文件提到了 WSGI。
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
这是项目结构
├── 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
Heroku 期望 Procfile
位于项目根目录中。如果 manage.py
也在项目根目录中,则部署 Django 应用程序最简单。例如,如果您的项目布局是:
├── 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
那么你可以 运行:
web: gunicorn radio.wsgi
在您的例子中,您的 Django 项目位于 radio
目录中。如果不想更改项目布局,则需要将 radio
添加到 python 路径,以便 python 导入工作:
web: gunicorn --pythonpath radio radio.wsgi
通过下载 Heroku CLI 使用 heroku login
从终端登录后,您可以使用 git
在 heroku
上部署,方法如下:
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
理想的项目结构应该是这样的...
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
正在尝试使用 this 教程部署我的应用程序。收到 ModuleNotFoundError: No module named 'radio.wsgi'
消息。
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.
在其他一些问题中,人们推荐 python manage.py run_gunicorn
但我有 Unknown command: 'run_gunicorn'
过程文件:
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()
只有那些文件提到了 WSGI。
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
这是项目结构
├── 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
Heroku 期望 Procfile
位于项目根目录中。如果 manage.py
也在项目根目录中,则部署 Django 应用程序最简单。例如,如果您的项目布局是:
├── 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
那么你可以 运行:
web: gunicorn radio.wsgi
在您的例子中,您的 Django 项目位于 radio
目录中。如果不想更改项目布局,则需要将 radio
添加到 python 路径,以便 python 导入工作:
web: gunicorn --pythonpath radio radio.wsgi
通过下载 Heroku CLI 使用 heroku login
从终端登录后,您可以使用 git
在 heroku
上部署,方法如下:
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
理想的项目结构应该是这样的...
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