2013-09-02 7 views
7

Ho configurato django-pipeline per comprimere js e css. Mentre js funziona, non è in grado di trovare i file css.La pipeline di Django non riesce a trovare file css statici

I file possono essere trovati utilizzando il comando findstatic. Lo sto testando con un solo file ora che ha una singola regola CSS. Ecco la mia configurazione

PIPELINE_CSS = { 
    'all_css': { 
     'source_filenames': (
      'css/test.css' 
     ) 
    }, 
    'output_filename': 'css/main.css' 
} 

PIPELINE = True 
PIPELINE_CSS_COMPRESSOR = None 

E il messaggio di errore -

% ./manage.py collectstatic --traceback               

You have requested to collect static files at the destination 
location as specified in your settings. 

This will overwrite existing files! 
Are you sure you want to do this? 

Type 'yes' to continue, or 'no' to cancel: yes 
Copying '/Users/apoorvparijat/Documents/Work_Related/programming/my_projects/analytics_app/devel/stable/static/css/test.css' 
Traceback (most recent call last): 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/core/management/base.py", line 222, in run_from_argv 
self.execute(*args, **options.__dict__) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/core/management/base.py", line 255, in execute 
output = self.handle(*args, **options) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/core/management/base.py", line 385, in handle 
return self.handle_noargs(**options) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 164, in handle_noargs 
collected = self.collect() 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 120, in collect 
dry_run=self.dry_run) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/storage.py", line 28, in post_process 
packager.pack_stylesheets(package) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/packager.py", line 94, in pack_stylesheets 
variant=package.variant, **kwargs) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/packager.py", line 103, in pack 
paths = self.compile(package.paths, force=True) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/packager.py", line 34, in paths 
return [path for path in self.sources 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/packager.py", line 26, in sources 
for path in glob(pattern): 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/glob.py", line 18, in glob 
return sorted(list(iglob(pathname))) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/glob.py", line 29, in iglob 
if default_storage.exists(pathname): 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/pipeline/storage.py", line 89, in exists 
exists = self.finders.find(name) is not None 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py", line 239, in find 
result = finder.find(path, all=all) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py", line 79, in find 
matched_path = self.find_location(root, path, prefix) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py", line 96, in find_location 
path = safe_join(root, path) 
File "/Users/apoorvparijat/.virtualenvs/stable/lib/python2.7/site-packages/django/utils/_os.py", line 77, in safe_join 
'path component (%s)' % (final_path, base_path)) 
ValueError: The joined path (/) is located outside of the base path component (/Users/apoorvparijat/Documents/Work_Related/programming/my_projects/analytics_app/devel/stable/static) 

risposta

22

Stai manca una virgola.

'source_filenames': (
    'css/test.css' # add a comma here 
) 

Se si dispone di una tupla con un solo elemento, è necessario aggiungere una virgola alla fine, altrimenti Python lo considererà un'espressione e non una tupla.