Gunicorn/Django,导入错误:没有名为application.wsgi的模块

izkcnapc  于 2023-01-27  发布在  Go
关注(0)|答案(4)|浏览(294)

我尝试使用Heroku部署Django应用,但遇到以下错误:"导入错误:没有名为myproject. wsgi "的模块。
我的项目配置如下:

my-project
│   Procfile
│   requirements.txt
│   runtime.txt
│   README.md
│
├───myproject
│   │   db.sqlite3
│   │   django
│   │   django._file_
│   │   import
│   │   manage.py
|   |
│   ├───myproject
|   |   |    wsgi.py
|   |   |    settings.py
|   |   |    urls.py
|   |   |    _init_.py
|   |   |
|   |   ├───_pycache_
|   | 
│   ├───venv
...

我的www.example.com文件配置如下:wgsi.py file is configured as such:

import os
import signal
import sys
import traceback
import time

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

我的过程文件包含以下内容:

web: gunicorn myproject.wsgi:application --log-file -

为什么会产生错误?

uyto3xhc

uyto3xhc1#

您的运行目录似乎是最外层的my-project。尝试更改您的WSGI应用程序路径,如gunicorn myproject.myproject.wsgi:application --log-file -,并查看错误是否改变。
我认为将您的项目放在根目录中(即删除第一个myproject目录,并将您的manage.py放在my-project目录中)是Heroku的要求,将解决您的问题。

qcuzuvrc

qcuzuvrc2#

最后我用gunicorn的chdir标志修复了这个问题,据我所知,chdir标志本质上是让你假装你正在从另一个目录运行gunicorn,这在heroku试图从一个目录运行gunicorn时很有用。
要在这里使用它,您可以在Procfile中使用:

web: gunicorn --chdir myproject myproject.wsgi:application --log-file -

例如,您需要新的:

--chdir myproject
hmmo2u0o

hmmo2u0o3#

扩展上述答案,我尝试了我的WSGI路径到gunicorn myproject.myproject.wsgi:application --log-file -和是错误改变了,现在它说ImportError: No module named myproject.settings。为了解决这个问题,我改变了我的wsgi文件。
发件人:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
收件人:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.myproject.settings')
它对我来说就像一个护身符!

nqwrtyyt

nqwrtyyt4#

我在requirements.txt中添加了gunicorn==20.1.0,它修复了这个问题。

相关问题