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

33
情境是这样的, 我从这里克隆了OpenShift-V3的Django代码。当我使用python manage.py runserver运行代码时,我遇到了以下错误:

django.core.exceptions.ImproperlyConfigured: WSGI应用程序“application”无法加载;导入模块时出错:'application'不像一个模块路径。

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

1
强烈建议您使用我在http://stackoverflow.com/questions/41431684/how-to-create-new-building-configuration-in-openshift-for-django-app中指出的Django示例应用程序。它们没有被重新组织,基本上就是使用“startproject”时所得到的内容。它们还解释了为使其更符合OpenShift V3而进行的更改以及其工作原理。 - Graham Dumpleton
31个回答

48

我使用了一个名为CorsMiddleware的中间件,但是忘记安装它,所以在安装后,它可以完美地运行。

pip install django-cors-headers

因此,请检查类似的内容,否则您可能会遗漏类似的东西。


4
这是正确的答案。只需仔细检查你的所有“中间件”即可! - Rami Alloush

30

仔细阅读,可能会看到 "上述异常是以下异常的直接原因:..."。而 "上述异常" 是由于您忘记安装白噪声导致的。运行 pip install whitenoise,这对我起作用。


或者说,在我的情况下,我已经将Django升级(从2.2.2到3.0.4),但还没有升级whitenoise。一旦我将whitenoise更新到最新版本(从4.1.2到5.0.1),这个错误就消失了。 - Paul Maurer
白噪声的新升级破坏了我的应用程序。在这里有明确的更新应用程序的说明:http://whitenoise.evans.io/en/stable/changelog.html#v4-0 - Todd

17

前往django-ex/project/settings.py

更改settings.py中的以下行:

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

就这样 :(


43
这对我不起作用。我遇到了相同的错误,即使我尝试更具体地添加了特定的project.wsgi.application,但它仍然无法运行。 - Loser Coder

16

如果你在本地开发时运行Django项目,只需从settings.py模块中删除WSGI_APPLICATION变量。这个变量仅在生产/预发布环境中需要,例如在settings_prod.py中。


4
这帮助我找到了导致问题的模块,对我来说是中间件的旧路径。 - LonnyT
2
就像 @LonnyT 所说的那样,它真的帮助我看出了哪个模块导致了这个问题。 - Sajeer Babu
1
这帮助我追踪到了中间件中的拼写错误。谢谢。 - Shedrack

7

你是否安装了Django Debug Toolbar

移除它并检查问题是否解决。可能的情况如下:

pip uninstall django-debug-toolbar

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

6

这个对我有用

如果你之前没有安装,现在可以安装:

pip install whitenoise

在settings.py文件中添加:
MIDDLEWARE = [
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community
对我来说,问题出在一个完全不同的项目上 - 需要读取实际的堆栈跟踪,指示缺少 whitenoise - Andez

5
pip install whitenoise

虽然解决了我的问题,但通常在将项目移动到不同的虚拟环境时会出现此类问题。有时我们会忘记安装软件包,而whitenoise模块缺失没有被明确提及,这可能会导致应用程序出现一些问题。


谢谢,它对我有用并解决了我的问题。 - faijan memon

3

在settings.py文件中,按照以下方式进行更改:

WSGI_APPLICATION = '你的项目名称.wsgi.application'


WSGI_APPLICATION = 'edx_django_utils.wsgi.application'我已经做了同样的事情,但仍然遇到相同的错误即django.core.exceptions.ImproperlyConfigured: 无法加载 WSGI 应用程序 'wsgi.application';导入模块时出错。 - Sujata R

3
请注意,在启动WSGI应用程序之前导入任何模块中的任何错误也会提示此消息,因此,请首先查看跟踪并从顶部开始解决问题。
我将一个Django应用程序从Python 2.7移植到Python 3,并添加了各种与此问题无关的模块导入问题。

3

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

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
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接