找不到 Django WhiteNoise 模块

Django WhiteNoise module not found

我正在使用 Docker 部署我的应用程序,出于某种原因,每次我的 Django 服务器不断返回以下错误:ImportError: No module named 'whitenoise',即使它说模块已经安装: Requirement already satisfied: whitenoise in /usr/local/lib/python3.5/dist-packages (3.3.1).

非常感谢有关此问题的任何帮助。

你在错误的地方安装...可能你忘记了 create/install/activate 你的 virtualenv 在你的 docker 容器中,所以当你登录时它安装了全局并且你的代码试图在VM,或者您安装在 VM 中并且您的代码看起来是全局的。

http://tinystruggles.com/2014/11/16/docker-virtualenv.html

如果你使用 Django==2.0 并且 Python >=3.5,你应该安装 whitenoise==3.3.1。 因此,在 wsgi.py 中,您可以使用 "application = DjangoWhiteNoise(application)".

对于那些已经使用 pip 安装了 whitenoise 的人。

步骤 - 1: 检查是否在 settings.py

中添加了中间件

"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",

步骤 - 2:

WhiteNoise 带有一个存储后端,它会自动负责压缩文件并为每个版本创建唯一的名称,以便它们可以安全地永久缓存。要使用它,只需将其添加到您的 settings.py:

STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

这结合了自动压缩和 Django 的 ManifestStaticFilesStorage 后端提供的缓存行为。如果你想应用压缩但不想要缓存行为,那么你可以使用:

STATICFILES_STORAGE = "whitenoise.storage.CompressedStaticFilesStorage"

参考文档:https://whitenoise.evans.io/en/stable/django.html