django.core.exceptions.ImproperlyConfigured: 无法加载 WSGI 应用程序 'application'

django.core.exceptions.ImproperlyConfigured: WSGI application 'application' could not be loaded

场景是,

我从 here 克隆了 OpenShift-V3 的 Django 代码。当我 运行 带有 python manage.py runserver 的代码时,我得到了这个错误:

django.core.exceptions.ImproperlyConfigured: WSGI application 'application' could not be loaded; Error importing module: 'application doesn't look like a module path

我没有在代码中添加任何内容,所需的包已经满足。

转到django-ex/project/settings.py

settings.py中的行改成如下

WSGI_APPLICATION = 'application' WSGI_APPLICATION = 'wsgi.application'

就是这样:(

在 settings.py 文件中 变化如下:

WSGI_APPLICATION = 'your_project_name.wsgi.application'

我用了一个中间件CorsMiddleware,但是忘记安装了,所以安装后效果很好。

pip 安装 django-cors-headers。

所以检查类似的东西你可能会错过类似的东西。

请注意,在启动 wsgi 应用程序之前任何地方导入模块的任何错误也会提示此消息,因此首先查看跟踪并从头开始修复问题。

我将 Django 应用程序从 python 2.7 移植到 python3 并添加了各种模块导入问题,与此问题没有直接关系。

你有 Django 调试工具栏吗

删除它并检查问题是否消失。可能出现的次数:

pip uninstall django-debug-toolbar

INSTALLED_APPS = [
    ...
    'debug_toolbar',
    ...
]

MIDDLEWARE = [
    ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    ...
]

如果您在本地 运行 django 项目进行开发,只需从 settings.py 模块中删除 WSGI_APPLICATION 变量。它需要在 prod/stage 设置中,例如 settings_prod.py

我用的是django-cors-headers,然后我以为我没有在我的项目中实现cors,所以继续安装django-cors-middleware,然后它开始给出wsgi异常,所以我检查了堆栈跟踪,我发现它是 django-cors-headers 和 django-cors-middleware 相互冲突。我不得不卸载 django-cors-middleware 但它仍然给出相同的异常,所以也卸载 django-cors-headers 然后重新安装,一切正常....

仔细阅读,可能会说"The above exception was the direct cause of the following exception: ..."。 "above exception" 是你忘记安装 whitehoise 了。 运行 pip install whitenoise,对我有用。

确保您处于所需的python环境

Get the requirements.txt file or the python modules list, which are needed to execute django.

安装所有模块,您就可以开始了。

我尝试了所有这些解决方案,对我有用的是:

pip install django-htmlmin

此模块丢失且未在 requirements.txt 中提及 显示以 wsgi 应用程序配置不正确结束的长错误消息。但是在中间的某个地方我可以看到 "No module named 'htmlmin' 我安装了它并解决了。

pip install whitenoise

虽然解决了我的问题。通常在我们将项目移动到不同的虚拟环境时生成。有时我们忘记安装包 & whitenoise 只是稍微破坏了应用程序,因为没有提到你缺少“whitenoise”模块。

同样的问题.. 我检查了是否安装了 django-cors-middleware 和 django-cors-headers。我发现那些没有安装,然后我安装了它们。

  1. python -m pip install django-cors-middleware
  2. python -m pip 安装 django-cors-headers

然后,

  1. python manage.py 迁移
  2. python manage.py 运行服务器

终于成功了....

也许使用中间件是解决这个问题的简单方法,这个问题主要发生在 cors 策略

代码:

class CorsMiddleware(object):
   def __init__(self, get_response):
      self.get_response = get_response

   def __call__(self, request):
      return self.get_response(request)

   def process_response(self,resp):
      resp["Access-Control-Allow-Origin"] = "*"
      return resp

当你在 MIDDLEWARE 中插入一些东西时会发生这种情况 = [......] 将添加的最新附加项放在中间件顶部的解决方案轮胎。

转到settings.py

  • 在 MIDDLEWARE 中,检查您是否添加了任何不起作用的东西。
  • 在INSTALLED_APPS中,检查您是否添加了应用程序。如果没有,请添加您为此项目创建的所有应用程序。

示例:我今天遇到了这个错误,完全不知道为什么会这样,然后在检查了一段时间后,我发现了一个非常愚蠢的错误,例如我在 MIDDLEWARE 中添加了我新创建的应用程序,而不是 INSTALLED_APPS.

在最新版本的 Django 中,要将您的应用程序添加到 settings.py 文件中的已安装应用程序中,请写入 -

[ ....,
'<appname>.apps.<Appname>Config',
]

其中 <Appname>Configapps.py 文件中函数的名称。

您在添加自定义中间件时也可能遇到此错误。在添加它时,确保你是这样的: folder_contains_your_middleware_file.middleware_file.middleware_class

下面是我的例子:

'company_management.loginCheckMiddleware.LoginCheckMiddleware'

我也遇到了同样的问题,尽管尝试了上述所有解决方案,但我还是遇到了同样的问题。 我注意到在此错误之前出现以下错误:

ModuleNotFoundError: No module named 'log_request_id'

为了解决这个错误,我使用 pip install django-log-request-id 安装了 django-log-request-id 软件包,这两个问题都得到了解决。

我删除了自定义中间件,但忘记将其从 settings.py 模块中的 MIDDLEWARES 中排除,因此请务必也进行验证。

检查日志,由于 "WhitenoiseMiddleware" 错误引发了相同的错误,例如 this.

解决它的方法是 确保 WhiteNoiseMiddleware 直接放在 Django SecurityMiddleware 之后(如果您正在使用它)和之前所有其他中间件。 在 settings.py:

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',  # <-- here
  # ...
]

查看 Django documentation 了解详情。

对我有用

 MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware', # add only comma 
    ]

我的 CROS 配置

ALLOWED_HOSTS=['*']
CROS_ORIGIN_ALLOW_ALL = True

这对我有用

如果你之前没有安装这个:

pip install whitenoise

在settings.py中添加:

MIDDLEWARE = [
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

检查你的中间件并删除错误字符串

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
raise ImportError(
    ImportError: Module "django.middleware.locale" does not define a "LocaleMiddlewarez" attribute/class
)

您可能没有在 setting.py 中输入正确的模块名称,或者您可能在错误的地方添加了它,例如中间件...

事实证明,在我的例子中,项目依赖项:django-request-logging 没有安装。这导致了同样的错误

pipenv install

为我安装了依赖项并解决了问题。

确保你的应用名称写在

INSTALLED_APPS = [ 
...
'App_name', 
]