2014-09-21 117 views
2

我想在Windows上本地获取django-pipeline。当我运行collecstatic或runserver命令,进入到现场,我得到以下错误:Django管道编译器不工作

NotADirectoryError at/
[WinError 267] The directory name is invalid 

就当{% compressed_css 'main' %}被称为模板它发生的部位。

看着似乎在pipeline\compilers\__init__.py在这条线是发生在回溯:return list(executor.map(_compile, paths)),与本地变量:

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的相关大块:

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' 
    } 
} 

两个青菜和yuglify从命令行工作。

相关文件系统结构:

myproject/ 
    ... 
    settings.py 
static/ 
    common/ 
     sass/ 
      main.sass 

如果我拿出PIPELINE_COMPILERS = (...),只是用它来缩小经常CSS文件,它完美的作品。

+0

任何解决方案吗?我仍然得到相同的错误:/ – 2015-04-13 12:10:09

+0

我问IRC,没有人能弄明白。我的“解决方案”是使用Linux。 – 2015-04-14 14:48:28

回答

0

我不熟悉Django管道,但我猜测它是由在Windows环境中使用Unix风格的路径造成的。例如。 sass/main.sass和css/main.css应该写为'sass\\main.sass''css\\main.css'

+0

你会这样想,但我尝试过使用'os.path.join()',并且还使用了反斜杠,但目前还没有运气。我也尝试了LESS编译器,并且遇到同样的问题。但yuglify工作得很好。 – 2014-09-22 00:48:11

+0

太糟糕了。使用完整的绝对路径怎么样? – Arjen 2014-09-22 09:42:33

+0

它并不期待它们,本地变量将其转换为完整路径。该程序甚至可以正确运行,如果我运行sass或lessc或其他具有相同参数的python正在给它,它在命令行中工作正常,并且在交互式shell中正常运行。这很混乱。 – 2014-09-22 09:47:35

1

我有同样的错误。

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

在你的情况下,你需要设置PIPELINE_SASS_BINARY