启用 WhiteNoise 时“collectstatic”命令失败

新手上路,请多包涵

我正在尝试按照 Heroku 的建议通过 WhiteNoise 提供静态文件。当我在我的开发环境中运行 collectstatic 时,会发生这种情况:

 Post-processing 'css/iconic/open-iconic-bootstrap.css' failed!

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 533, in handle
    return self.handle_noargs(**options)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle_noargs
    collected = self.collect()
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 120, in collect
    raise processed
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 242, in post_process
    content = pattern.sub(converter, content)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 181, in converter
    hashed_url = self.url(unquote(joined_result), force=True)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 128, in url
    hashed_name = self.stored_name(clean_name)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 277, in stored_name
    cache_name = self.clean_name(self.hashed_name(name))
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 91, in hashed_name
    (clean_name, self))
ValueError: The file 'css/fonts/open-iconic.eot' could not be found with <whitenoise.django.GzipManifestStaticFilesStorage object at 0x7f57fc5b1550>.

当我在我的设置中注释掉这一行时,静态收集命令运行顺利:

 STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

这里出了什么问题,我该如何解决?我已经尝试清空我的静态文件输出文件夹。它运行平稳,直到它开始处理一个特定的文件。

原文由 Pieter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

这里的问题是 css/iconic/open-iconic-bootstrap.css 引用了一个文件 open-iconic.eot ,它不存在于预期的位置。

当您使用该存储后端运行 collectstatic 时,Django 会尝试重写您的 CSS 文件中的所有 URL,以便它们通过新名称引用文件,例如 css/iconic/open-iconic.8a7442ca6bed.eot 。如果找不到该文件,它将因该错误而停止。

原文由 D. Evans 发布,翻译遵循 CC BY-SA 3.0 许可协议

我刚刚遇到了同样的问题,并通过从我的设置文件中删除这一行来修复它,

 STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

我从 Heroku 文档页面得到了这一行……

原文由 user772401 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题