当我将 Django 应用程序部署到 Heroku 时,在控制台 (heroku logs --tail -a george-paintings
) 中我看到一个错误:
2021-04-15T15:14:42.109272+00:00 app[web.1]: Error: No application module specified.
2021-04-15T15:14:42.161597+00:00 heroku[web.1]: Process exited with status 1
2021-04-15T15:14:42.290903+00:00 heroku[web.1]: State changed from starting to crashed
但我不知道出了什么问题。我的Procfile
看起来像这样
web: gunicorn --pythonpath application.george_paintings.george_paintings.wsgi --log-file - --log-level debug
在哪里可以找到有关我的错误的更多信息?
答案 0 :(得分:1)
我怀疑没有什么可看的了。一个好的第一步是尝试运行 heroku local
以查看您的开发机器上是否有同样的问题。这将使用您的 Procfile
,而如果您通过 python manage.py migrate
或类似方式运行,则不会使用您的 Procfile
。
该错误提供了一个很好的提示:
app[web.1]: Error: No application module specified.
Gunicorn expects an application module name 作为命令行参数。我怀疑您打算将 application.george_paintings.george_paintings.wsgi
解释为您的应用程序模块,但它被当作 --pythonpath
的参数吞没了:
gunicorn --pythonpath application.george_paintings.george_paintings.wsgi #...
您不需要明确提供 PYTHONPATH
。尝试从您的 Procfile
中完全删除该参数:
gunicorn application.george_paintings.george_paintings.wsgi --log-file - --log-level debug
如果这适用于 heroku local
,请提交更改并重新部署。
如果没有,请查看您的目录结构。 application.george_paintings.george_paintings.wsgi
是 Django 项目的一个有点奇怪的模块名称。通常你只需要像 george_paintings.wsgi
这样的东西(表明 Gunicorn 应该使用它在 george_paintings/wsgi.py
找到的 Python 模块作为它的入口点)。