'collectstatic' commande échoue lorsque WhiteNoise est activé
Je suis en train de servir des fichiers statiques à travers WhiteNoise comme par Herokude la recommandation. Quand je lance collectstatic
dans mon environnement de développement, ce qui se passe:
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 statique de la collection de la commande s'exécute sans incident quand je commenter cette ligne dans mes paramètres:
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Ce qui va mal ici et comment puis-je résoudre ce problème? J'ai déjà essayé de vider mon fichier statique dossier de sortie. Il fonctionne bien jusqu'à ce qu'il commence à traiter un fichier spécifique.
Vous devez vous connecter pour publier un commentaire.
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
collectstatic
avec qui backend de stockage de Django tentatives de réécrire toutes les Url dans vos fichiers CSS si elles font référence à des fichiers par leurs nouveaux noms.e.g,css/iconic/open-iconic.8a7442ca6bed.eot
. Si il ne peut pas trouver le fichier, il s'arrête avec l'erreur.open-iconic-bootstrap.css
et il n'y a pas de différence entre le fichier original et la copie dans le statique dossier.django.contrib.staticfiles.storage.CachedStaticFilesStorage
ainsi. Vous n'avez pas à utiliser le backend de stockage à utiliser WhiteNoise, il devient simplement les meilleures performances..eot
fichier de police est manquant, alors vous trouverez votre icône polices ne fonctionne pas dans Internet Explorer. Si vous le corriger puiscollectstatic
devrait fonctionner sans problème.J'ai juste eu le même problème et résolu en supprimant cette ligne de mon fichier de paramètres,
J'ai eu cette ligne à partir de la Heroku page de documentation...
J'ai eu cette erreur en prétendant qu'un manque .fichier css quand tous mes .les fichiers css existé, parce que j'avais confiance Heroku documentation:
sur WhiteNoise documentation:
La solution est triviale, mais jusqu'à ce que Heroku fixer leurs docs (j'ai soumis des commentaires), permet d'assurer que la solution au moins semble dans la.
Le problème ici est que l'utilisation de
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
ou
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage
utilise Django statique de stockage de fichiers dans une manière différente de celle de runserver n'. Voir le Django docs pour quelques explications: https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict
Je crois que le référencés manifeste se construit lorsque vous exécutez collectstatic, afin de le faire devrait résoudre temporairement ce problème, mais il est probable que vous ne souhaitez pas exécuter collectstatic avant chaque essai si vous avez modifié des fichiers statiques. Une autre solution serait de désactiver ce paramètre pour vos tests, et il suffit de lancer dans la production.
Pour moi la solution était tout simplement de l'ajout d'un "statique" dossier dans le répertoire supérieur (myapp/static a fait le tour). Si vous êtes à la définition de la STATIC_URL, mais n'ont pas le répertoire déjà créé, il lèvera une erreur, même si vous n'êtes pas à l'aide de ce répertoire pour vos fichiers statiques avec whitenoise.
J'ai eu le même problème, mais avec une torsion.
J'ai déployé sur pythonanywhere. Si je tourne debug à True, app fonctionne très bien. Mais si un tour de débogage False, l'application se bloque avec une erreur qu'avec une ligne d'être 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
répertoire, puis exécutez à nouveaupython manage.py collectstatic
.Maintenant app fonctionne très bien
Il a travaillé pour moi en commentant la whitenoise dans settings.py dans la production.
J'ai eu affaire à ce problème tous les jours. Il s'avère que le problème était le
staticfiles
répertoire n'a pas été vérifiée dans git. J'ai créé un fichier fictif à l'intérieur de ce répertoire, vérifié dans et tout allait bien. Cela a été mentionné quelque part dans le Whitenoise documentation trop, je crois.Assurez-vous de vérifier tous vos paramètres relatifs aux fichiers statiques, surtout assurez vous que les chemins sont pointant vers la droite endroits. J'ai eu personnellement l'un de mes
STATICFILES_DIRS
pointant vers un mauvais chemin.Un peu comme tout le monde, j'ai eu une unique solution au problème... s'avère que j'avais un
url()
dans monstyles.css
fichier avec une mauvaise syntaxe.Une fois que j'ai changé:
background-image: url( '../images/futura_front_blank_medium.jpg' );
à
background-image: url('../images/futura_front_blank_medium.jpg');
(notez la subtile différence, j'ai enlevé les espaces de chaque côté de la chaîne)
puis
python manage.py collectstatic
a bien fonctionné et je n'ai pas cette erreur.La
whitenoise.django.GzipManifestStaticFilesStorage
alias a été supprimée. Au lieu de cela, vous devez utiliser le bon chemin d'importation:whitenoise.storage.CompressedManifestStaticFilesStorage
.Que par le doc ici.