首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Pipeline编译器不工作

Django Pipeline编译器不工作
EN

Stack Overflow用户
提问于 2014-09-22 05:41:11
回答 2查看 1.3K关注 0票数 3

我正在尝试让django-pipeline在Windows上本地工作。当我运行集合体或runserver并转到站点时,我得到以下错误:

代码语言:javascript
复制
NotADirectoryError at /
[WinError 267] The directory name is invalid

在网站上,当在模板中调用{% compressed_css 'main' %}时就会发生这种情况。

看一下回溯,它似乎发生在pipeline\compilers\__init__.py中的这一行上:return list(executor.map(_compile, paths)),带有本地变量:

代码语言:javascript
复制
futures         <module 'concurrent.futures' from 'C:\\Python34\\Lib\\concurrent\\futures\\__init__.py'>
force           False
_compile        <function Compiler.compile.<locals>._compile at 0x0387A858>
paths           ['sass/main.sass']
multiprocessing <module 'multiprocessing' from 'C:\\Python34\\Lib\\multiprocessing\\__init__.py'>
executor        <concurrent.futures.thread.ThreadPoolExecutor object at 0x0387B970>
self            <pipeline.compilers.Compiler object at 0x0387B870>

Settings.py的相关块:

代码语言:javascript
复制
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'

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

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


# Pipeline
PIPELINE_SASS_BINARY = 'sass'
PIPELINE_YUGLIFY_BINARY = 'yuglify'

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

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

sass和yuglify都是从命令行工作的。

相关文件系统结构:

代码语言:javascript
复制
myproject/
    ...
    settings.py
static/
    common/
        sass/
            main.sass

如果我取出PIPELINE_COMPILERS = (...),仅仅用它来缩小一个常规的CSS文件,它就能完美地工作。

EN

回答 2

Stack Overflow用户

发布于 2015-03-24 07:03:24

我也犯了同样的错误。

它来自压缩器:当DEBUG = True时,django-pipeline不会压缩你的文件,但它仍然会尝试编译它们。因此,如果您有任何需要压缩的文件,您必须为Windows设置路径(默认路径为linux)。否则,您也可以只将编译器投入生产,并使用浏览器编译(我选择LESS)。

在您的示例中,需要设置PIPELINE_SASS_BINARY

票数 1
EN

Stack Overflow用户

发布于 2014-09-22 06:56:23

我不熟悉django-pipelines,但我猜这是由于在Windows环境中使用Unix风格的路径造成的。例如,sass/main.sass和css/main.css应该写成'sass\\main.sass''css\\main.css'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25964158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档