2014-09-21 120 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