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。我发现那些没有安装,然后我安装了它们。
- python -m pip install django-cors-middleware
- python -m pip 安装 django-cors-headers
然后,
- python manage.py 迁移
- 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>Config
是 apps.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',
]
场景是,
我从 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 thepython 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。我发现那些没有安装,然后我安装了它们。
- python -m pip install django-cors-middleware
- python -m pip 安装 django-cors-headers
然后,
- python manage.py 迁移
- 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>Config
是 apps.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',
]