2015-07-28 2 views
0

У меня возникла проблема с получением libsass для компиляции файлов SASS. Я могу заставить его скомпилировать файлы SCSS.Python libsass sass.complie() not compiling sass

У меня есть приложение для фляги, и я установил libsass, и я использую привязку libsass sass. Он работает хорошо, но не хватает некоторых функций - он не может скомпилировать SASS, но он может скомпилировать SCSS. Вот что я сделал:

В моем applicaiton.py файле у меня есть

from flask import Flask 
import sass 

app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    sass.compile(dirname=('client/sass', 'client/css'), source_comments=True) 
    app.run() 

Мои два тестовых файлов test_scss.scss, который работает:

$font-stack: Helvetica, sans-serif; 
$primary-color: #333; 

body { 
    font: 100% $font-stack; 
    color: $primary-color; 
} 

И test_sass.sass:

$font-stack: Helvetica, sans-serif 
$primary-color: #333 

body 
    font: 100% $font-stack 
    color: $primary-color 

В документации указано, что sass.complie может принимать код SASS b ut Я могу получить только код SCSS. То есть, когда я запускаю свое приложение, только файл .scss компилируется в CSS. Структура каталогов моего applicaiton после sass.compile прогонов:

  • клиент
    • CSS
      • app.css
      • test_scss.css
    • Lib
    • дерзость
      • test_sass.sass
      • test_scss.scss
  • сервер
    • шаблоны
    • application.py

Кто-то предположил, что я просто переименовал файл SASS в расширение .scss. Как test_sass.scss

$font-stack: Helvetica, sans-serif 
$primary-color: #333 

body 
    font: 100% $font-stack 
    color: $primary-color 

Однако, когда я делаю это, я просто получаю следующее сообщение об ошибке:

src/web-internal/server/applicaiton.py", line 8, in <module> 
    sass.compile(dirname=('client/sass', 'client/css'), source_comments=True) 
    File "/usr/local/lib/python3.4/site-packages/sass.py", line 516, in compile 
    raise CompileError(v) 
sass.CompileError: b"Error: top-level variable binding must be terminated by ';'\n  on line 2 of src/web-internal/server/../client/sass/test_sass.scss\n>> $primary-color: #333\n ^\n" 

Я хотел бы использовать SASS, и будет perfer не соглашаться на SCSS. У кого-нибудь есть предложения? Я чувствую, что есть что-то в sass documentation, что я недопонимаю.

+0

Можете ли вы показать структуру папок вашего приложения? – doru

+0

@doru, Вы поняли! – Mike

+0

Ваши папки 'sass',' css' должны находиться в папке с именем 'static'. См. [Здесь] (http://hongminhee.org/libsass-python/frameworks/flask.html#id3) некоторую информацию. – doru

ответ

0

У меня никогда не было этой работы с sass.compile, но я нашел работу вокруг.

... 

if __name__ == '__main__': 
    # Start sassc with --watch 
    sass_cmd = subprocess.Popen(['sass', '--watch', 'client/sass' + ':' + 'client/css']) 
    ...