2012-07-05 3 views
3

Когда я бегу питона manage.py collectstatic, я получаю:Брус сжимать файлы с Джанго-трубопроводом и YUI

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/fceruti/Development/Arriendas.cl/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
    utility.execute() 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
    output = self.handle(*args, **options) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle 
    return self.handle_noargs(**options) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 163, in handle_noargs 
    collected = self.collect() 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 119, in collect 
    dry_run=self.dry_run) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/storage.py", line 30, in post_process 
    packager.pack_stylesheets(package) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/packager.py", line 90, in pack_stylesheets 
    variant=package.variant, **kwargs) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/packager.py", line 100, in pack 
    content = compress(paths, **kwargs) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/compressors/__init__.py", line 72, in compress_css 
    css = self.concatenate_and_rewrite(paths, output_filename, variant) 
    File "/Users/fceruti/Development/Arriendas.cl/venv/lib/python2.7/site-packages/pipeline/compressors/__init__.py", line 135, in concatenate_and_rewrite 
    content = self.read_file(path) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/compressors/__init__.py", line 208, in read_file 
    file = default_storage.open(path, 'rb') 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/django/core/files/storage.py", line 33, in open 
    return self._open(name, mode) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/storage.py", line 114, in _open 
    storage = self.find_storage(name) 
    File "/Users/fceruti/Development/xxxxx/venv/lib/python2.7/site-packages/pipeline/storage.py", line 111, in find_storage 
    raise ValueError("The file '%s' could not be found with %r." % (name, self)) 
ValueError: The file 'css/960_24_col.css' could not be found with <pipeline.storage.PipelineFinderStorage object at 0x101da4d50>. 

Когда я бегу питон manage.py findstatic CSS/960_24_col.css, я получить

Found 'css/960_24_col.css' here: 
    /Users/fceruti/Development/xxxxxxx/Arriendas/static/css/960_24_col.css 

Мои настройки:

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 

STATICFILES_DIRS = (
    ('css', os.path.join(STATIC_ROOT, 'css')), 
    ('img', os.path.join(STATIC_ROOT, 'img')), 
    ('js', os.path.join(STATIC_ROOT, 'js')), 
    ('fonts', os.path.join(STATIC_ROOT, 'fonts')), 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 
PIPELINE = True 
PIPELINE_CSS = { 
    'app': { 
     'source_filenames': (
      'css/960_24_col.css', 
      'css/base.scss', 
     ), 
     'output_filename': 'css/app.css', 
     'extra_context': { 
      'media': 'screen,projection', 
     }, 
    }, 
} 
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor' 
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor' 
PIPELINE_YUI_CSS_ARGUMENTS = '' 
PIPELINE_YUI_JS_ARGUMENTS = '' 
PIPELINE_YUI_BINARY = os.path.join(PROJECT_ROOT, 'libs/yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar') 

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage' 
PIPELINE_SASS_BINARY = '/usr/bin/sass' 

Когда я добавляю

PIPELINE_COMPILERS = (
    'pipeline.compilers.sass.SASSCompiler', 
) 

И запустить веб-страницу, я получаю:

Exception Type: CompilerError 
Exception Value:  
Unable to apply SASSCompiler compiler 

Что я делаю неправильно?

РЕДАКТИРОВАТЬ:

В программное обеспечение я использую являются:

  • Сасс 3.1.19 (Брейни Бетти)
  • YUI компрессор 2.4.7
  • Джанго-трубопровод == 1.2. 11
  • Джанго 1,4
+0

Он, кажется, не сочетает их с вашим STATIC_ROOT. Вы пробовали использовать «PipelineStorage» вместо «PipelineCachedStorage»? Также попробуйте 'PipelineFinderStorage', поскольку он говорит об этом для dev-сервера. – jdi

+0

Я пробовал это, но он терпит неудачу, потому что collectstatic не делает выходные файлы, и я получаю 404 ошибки. – fceruti

+0

Можете ли вы добавить свои параметры статических файлов, версию конвейера, которую вы используете, а также полную трассировку для CompilerError. Благодарю. – cyberdelia

ответ

1

Во-первых, Вы не должны ставить банку, как PIPELINE_YUI_BINARY, но вы должны указать на скрипт, который вызывает банку с java (большую часть времени она связывается с ней при упаковке). Это выглядит следующим образом:

#!/bin/sh 
java -jar "/path/to/yuicompressor-2.4.7.jar" [email protected] 
+0

Не могли бы вы дать мне подсказку о том, где этот скрипт, или как его построить? – fceruti

+0

@fceruti Я добавил его к своему ответу. – cyberdelia

-1

Я думаю, что вы хотите, чтобы ваше STATICFILES_DIRS выглядеть примерно так:

STATICFILES_DIRS = ('./static/') 

Если это не сработает, попробуйте что-то вроде этого.

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)[0: (os.path.dirname(__file__).rindex(os.sep + 'src' + os.sep))]) 
STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'static/')) 

(идея установить PROJECT_ROOT в каталог верхнего уровня для вашего приложения)

так, как вы его настроить это будет выглядеть в каждом из ваших вложенных каталогов для «CSS/960_24_col.css "другими словами, он будет искать

  • STATIC_ROOT/CSS/CSS /960_24_col.css
  • STATIC_ROOT/IMG/CSS/960_24_col.css
  • STATIC_ROOT/js/css/960_24_col.css
  • STATIC_ROOT/fonts/css/960_24_col.CSS

И это будет не найти его, потому что файл находится в

STATIC_ROOT/css/960_24_col.css 

В общем, STATICFILES_DIRS представляет собой сборник/статических/каталогов, которые содержатся в различных приложениях. Если yourApp включает myApp, а myApp имеет статический каталог, вы бы поставили статический каталог dir myApp и статический каталог myApps в списке. Collectstatic объединит их в STATIC_ROOT, а затем запустит Pipeline.