2016-10-12 1 views
0

Lors de l'exécution python manage.py collectstatic --noinput je reçois l'erreur suivante:django-pipeline jetant ValueError: le fichier n'a pas pu être trouvé

Post-processing 'jquery-ui-dist/jquery-ui.css' failed! 
Traceback (most recent call last): 
File "manage_local.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
utility.execute() 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/core/management/__init__.py", line 359, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/core/management/base.py", line 294, in run_from_argv 
self.execute(*args, **cmd_options) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/core/management/base.py", line 345, in execute 
output = self.handle(*args, **options) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 193, in handle 
collected = self.collect() 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 145, in collect 
raise processed 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 257, in post_process 
content = pattern.sub(converter, content) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 187, in converter 
hashed_url = self.url(unquote(target_name), force=True) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 132, in url 
hashed_name = self.stored_name(clean_name) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 292, in stored_name 
cache_name = self.clean_name(self.hashed_name(name)) 
File "/Users/michaelbates/GoogleDrive/Development/inl/venv/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 95, in hashed_name 
(clean_name, self)) 
ValueError: The file 'jquery-ui-dist/"images/ui-icons_555555_256x240.png"' could not be found with <pipeline.storage.PipelineCachedStorage object at 0x1073e2c50>. 

Si je cours python manage.py findstatic jquery-ui-dist/"images/ui-icons_555555_256x240.png" je reçois:

Found 'jquery-ui-dist/images/ui-icons_555555_256x240.png' here: 
     /Users/michaelbates/GoogleDrive/Development/inl/node_modules/jquery-ui-dist/images/ui-icons_555555_256x240.png 
     /Users/michaelbates/GoogleDrive/Development/inl/staticfiles/jquery-ui-dist/images/ui-icons_555555_256x240.png 

Voici quelques-unes paramètres pertinents:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'pipeline.finders.AppDirectoriesFinder', 
    'pipeline.finders.PipelineFinder', 
) 

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage' 
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
    os.path.join(BASE_DIR, 'node_modules'), 
) 

Mes paramètres PIPELINE ge je ne vais pas poster la chose entière, mais certaines parties sont:

PIPELINE = { 
    'STYLESHEETS': { 
     'pricing': { 
      'source_filenames': (
       'jquery-ui-dist/jquery-ui.min.css', 
      ), 
      'output_filename': 'css/pricing.min.css' 
     }, 
    } 
    'JS_COMPRESSOR': 'pipeline.compressors.yuglify.YuglifyCompressor', 
    'CSS_COMPRESSOR': 'pipeline.compressors.yuglify.YuglifyCompressor', 
    'COMPILERS': (
     'pipeline.compilers.sass.SASSCompiler', 
    ) 
} 

J'ai essayé de changer les STATICFILES_FINDERS à ceux spécifiques django-pipeline, mais il ne fait aucune différence. Quelqu'un peut-il faire la lumière sur pourquoi ce fichier png ne peut pas être trouvé pendant collectstatic mais peut avec findstatic?

Répondre

4

Votre problème est lié à this bug sur le projet Django.

En bref, django-pipeline est post-traitement des appels url() avec Django CachedStaticFilesStorage pour ajouter la somme de contrôle md5 au nom du fichier (more details here) et ne détecte pas quand il est dans un commentaire.

Si vous regardez sur l'en-tête de la jquery-ui.css (et similaire) fichiers il y a un commentaire qui commence par

  • To view and modify this theme, visit [...]

il y a un paramètre intérieur de l'URL sur cette ligne qui est interprété comme un appel url() et générant l'erreur que vous voyez. Pour contourner ce problème, vous pouvez simplement supprimer la ligne ci-dessus jquery-ui.css et collectstatic devrait fonctionner correctement.

+0

Merci, c'était exactement mon problème. Je m'en suis rendu compte il y a environ une semaine, mais je n'ai jamais réussi à écrire une réponse à cette question. Je vais accepter le vôtre. –

+0

Cela m'a permis de résoudre un problème que j'avais du mal à identifier. Je vous remercie. –