la commande' collectstatic ' échoue lorsque la couleur blanche est activée
je suis en train de servir des fichiers statiques à l'aide de WhiteNoise par Heroku's recommandation. Quand je run collectstatic
dans mon environnement de développement, cela arrive:
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>.
la commande de collecte statique s'exécute sans incident lorsque je commente cette ligne dans Mes paramètres:
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Qu'est-ce qui ne va pas ici et comment puis-je le réparer? J'ai déjà essayé de vider mon fichier statique dossier de sortie. Il fonctionne bien jusqu'à ce qu'il commence un traitement spécifique fichier.
8 réponses
Le problème ici est que css/iconic/open-iconic-bootstrap.css
fait référence à un fichier, open-iconic.eot
, qui n'existe pas dans l'emplacement prévu.
Lorsque vous exécutez css/iconic/open-iconic.8a7442ca6bed.eot. S'il ne trouve pas le fichier, il s'arrête avec cette erreur.
j'ai eu cette erreur en prétendant une disparition .fichier css quand tous mes .les fichiers css existaient, parce que J'ai fait confiance à la documentation D'Heroku:
STATIC_ROOT = 'staticfiles'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
le correctif est trivial, mais jusqu'à ce que Heroku corriger leurs docs (j'ai soumis des commentaires), permet de s'assurer que la solution apparaît au moins dans SO.
j'ai juste eu le même problème et résolu en supprimant cette ligne de mon fichier de paramètres
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
j'ai eu cette ligne de la page de documentation D'Heroku...
Le problème ici est que l'utilisation de
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
ou
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage
utilise le stockage statique de fichiers de Django d'une manière différente de celle de runserver. Voir les Docs de Django pour une explication: https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict
je crois que le manifeste référencé est construit quand vous exécutez collectstatic, donc cela devrait corriger ce problème temporairement, mais vous ne voulez probablement pas exécuter collectstatic avant chaque essai si vous avez modifié des fichiers statiques. Une autre solution serait de désactiver ce réglage pour vos tests, et de l'exécuter en production.
pour moi, le correctif était simplement d'ajouter un dossier 'static' au répertoire supérieur (myapp/static a fait l'affaire). Si vous définissez le répertoire STATIC_URL mais que vous n'avez pas déjà créé ce répertoire, il y aura une erreur, même si vous n'utilisez pas ce répertoire pour vos fichiers statiques avec whitenoise.
STATIC_URL = '/static/'
cela a fonctionné pour moi en commentant la settings.py en production.
#STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
#WHITENOISE_ROOT = os.path.join(BASE_DIR, 'staticfiles')
j'ai eu le même problème, mais avec une torsion.
je me suis déployé sur Python anywhere. Si je deviens debug True, app fonctionne très bien. Mais si un turn debug False, app crash avec une erreur qui avec une ligne étant le résumé
ValueError: Missing staticfiles manifest entry for 'favicons/favicon.ico'
j'ai changé de STATIC_ROOT = 'staticfiles
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Supprimé staticfiles
dossier, puis exécutez à nouveau python manage.py collectstatic
.
Maintenant app fonctionne très bien
j'ai eu affaire à ce problème tous les jours. Il s'avère que le problème était l' staticfiles
le répertoire n'a pas été coché sur git. J'ai créé un fichier fictif dans ce répertoire, Je l'ai vérifié et tout allait bien. Cela a aussi été mentionné quelque part dans la documentation de Whitenoise, je crois.