Django pipeline can't find static css files
Asked Answered
Y

1

7

I've configured django-pipeline to compress js and css. While js works, it is not able to find css files.

The files can be found using findstatic command. I'm testing it with just one file now which has a single css rule. Here's my configuration

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

PIPELINE = True
PIPELINE_CSS_COMPRESSOR = None

And the error message -

% ./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)
Yoshikoyoshio answered 2/9, 2013 at 11:12 Comment(0)
K
23

You're missing a comma.

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

If you have a tuple with just one element, you need to add a comma at the end, otherwise Python will consider it an expression and not a tuple.

Kamalakamaria answered 3/9, 2013 at 11:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.