代码之家  ›  专栏  ›  技术社区  ›  Horai Nuri

为什么django管道不收集静态数据?

  •  2
  • Horai Nuri  · 技术社区  · 7 年前

    收集没有djanog管道的静态工程。我还尝试在与相同的级别添加静态文件 manage.py 没什么不同。。。

    以下是我的应用程序树的配置方式:

    Globalapp : (root folder)
        - src (the base that contains all my django files)
            -- staticfiles (folder here after collectstatic)
    
            -- manage.py (file)
    
            -- app (folder, where settings.py is)
               ...
            -- pages (folder, where static files are)
               --- static
                   - css
                     -- main.css
    ...
    

    设置.py

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    INSTALLED_APPS = [
        ...
        'pipeline',
    ]
    
    ...
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    #tried : STATIC_ROOT = os.path.join(BASE_DIR, 'pages')
    
    STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
    
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
        'pipeline.finders.PipelineFinder',
    )
    
    PIPELINE = {
        'COMPILERS': (
            'pipeline.compilers.stylus.StylusCompiler',
        ),
        'STYLESHEETS': {
            'pages': {
                'source_filenames': (
                  'css/main.css',
                ),
                'output_filename': 'designer.css',
            },
        },
    }
    

    python manage.py collectstatic ,我做错什么了吗?


    这是回溯:

    Traceback (most recent call last):
      File "manage.py", line 22, in <module>
        execute_from_command_line(sys.argv)
      File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
        utility.execute()
      File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 355, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "C:\Python34\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
        self.execute(*args, **cmd_options)
      File "C:\Python34\lib\site-packages\django\core\management\base.py", line 330, in execute
        output = self.handle(*args, **options)
      File "C:\Python34\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 199, in handle
        collected = self.collect()
      File "C:\Python34\lib\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 139, in collect
        for original_path, processed_path, processed in processor:
      File "C:\Python34\lib\site-packages\pipeline\storage.py", line 26, in post_process
        packager.pack_stylesheets(package)
      File "C:\Python34\lib\site-packages\pipeline\packager.py", line 100, in pack_stylesheets
        variant=package.variant, **kwargs)
      File "C:\Python34\lib\site-packages\pipeline\packager.py", line 118, in pack
        content = compress(paths, **kwargs)
      File "C:\Python34\lib\site-packages\pipeline\compressors\__init__.py", line 78, in compress_css
        css = getattr(compressor(verbose=self.verbose), 'compress_css')(css)
      File "C:\Python34\lib\site-packages\pipeline\compressors\yuglify.py", line 20, in compress_css
        return self.compress_common(css, 'css', settings.YUGLIFY_CSS_ARGUMENTS)
      File "C:\Python34\lib\site-packages\pipeline\compressors\yuglify.py", line 14, in compress_common
        return self.execute_command(command, content)
      File "C:\Python34\lib\site-packages\pipeline\compressors\__init__.py", line 247, in execute_command
        stdin=subprocess.PIPE, stderr=subprocess.PIPE)
      File "C:\Python34\lib\subprocess.py", line 859, in __init__
        restore_signals, start_new_session)
      File "C:\Python34\lib\subprocess.py", line 1114, in _execute_child
        startupinfo)
    FileNotFoundError: [WinError 2] The specified path to the file was not found.
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Horai Nuri    7 年前

    我最终使用了 django-compressor django-sass-processor 。它像django管道一样工作,我找不到这个特定问题的原因,但这些其他软件包的工作原理与管道的工作原理几乎相同。

    如果安装django compressor wiith pip时遇到问题,请尝试使用以下命令:

    pip install rcssmin --install-option="--without-c-extensions"
    pip install rjsmin --install-option="--without-c-extensions"
    pip install django-compressor --upgrade
    
    推荐文章