collectstatic 无法收集管理静态文件

Posted

技术标签:

【中文标题】collectstatic 无法收集管理静态文件【英文标题】:collectstatic fails to collect admin static files 【发布时间】:2012-12-24 06:29:50 【问题描述】:

当我运行 collectstatic 并且在没有 css 的情况下提供管理页面时,我遇到了以下错误。

错误:

IOError: [Errno 2] 没有这样的文件或目录: u'/usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/img/gis/move_vertex_off.png

以下是设置。

STATIC_ROOT = '/var/www/mysite/media/'

STATIC_URL = '/static/'

ADMIN_MEDIA_PREFIX = '/static/admin/'

这个错误信息是什么意思?该文件确实存在于上述路径中。

【问题讨论】:

【参考方案1】:

我认为问题是由于某些安装错误造成的。重新安装 django 没有帮助。完全重新安装了操作系统,因为这对我来说是更快的解决方案,而且一切顺利。但对我来说,根本原因仍然是个谜。

【讨论】:

我怀疑是你的Django项目的Python安装和配置。 @stellarchariot 是的。我也怀疑权限。 @Vino 重新安装操作系统? O_O 能帮到你我很高兴。【参考方案2】:

默认情况下,collectstatic 在 STATICFILES_DIRS 中定义的所有位置以及 INSTALLED_APPS 设置指定的应用程序的“静态”目录中查找(请参阅:https://docs.djangoproject.com/en/dev/howto/static-files/ 和 https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/)。

因此,如果您将管理员添加到您的 INSTALLED_APPS,这应该没问题。

当前版本的 Django 中不再使用 ADMIN_MEDIA_PREFIX。

【讨论】:

【参考方案3】:

我通过运行python manage.py collectstatic 解决了这个问题,然后将以下内容添加到我的 Apache 配置中:

Alias /static/admin/ /PATH/TO/MY/PROJECT/static_root/admin/

<Directory /PATH/TO/MY/PROJECT/static_root/admin>
Require all granted
</Directory>

【讨论】:

以上是关于collectstatic 无法收集管理静态文件的主要内容,如果未能解决你的问题,请参考以下文章

收集静态文件会抛出 ImproperlyConfigured

Collectstatic仅适用于某些应用

ValueError:即使在 collectstatic 之后也缺少静态文件清单条目

Django,即使在 collectstatic 之后也没有提供 uwsgi 静态文件

用于收集静态的 Django 1.11 + Amazon S3

collectstatic 不推送到文件 S3