Previous Entry Share
Django-pipeline converter on windows issue
mydevnet

Запись опубликована Я разработчик. Пожалуйста, оставляйте комментарии там.

Столкнулся со следующей проблемой. django-pipeline при обработке coffeescript (и других форматов) через manage collectstatic выдает  системную ошибку 22: неправильный синтаксис в имени файла или метки тома. После изучения настроек pipeline оказалось, что проблема не в моих настройках, а находится на стыке pipeline и библиотек python.

А именно: shlex или pipes. Конкретно метод quotes(), который из pipes в 3-м питоне переполз в shlex. Но обо всем по порядку. Открываем site-packages/pipeline/_init_.py

строка 5:

try:
from shlex import quote as quote
except ImportError:
from pipes import quote as quote

строка 44:

  compiler.compile_file(quote(infile), quote(outfile), outdated=outdated, force=force)

Это передает в обработчик пути файлов для обработки: входной и выходной, обернутые в кавычки. В кавычках и оказалась вся соль. Дело в том, что quote() оборачивает в одинарные кавычки, которые не воспринимаются стандартным обработчиком в Windows.

Если Вы только разрабатываете под windows и готовы поставить костыль и помнить о нем, то можно поставить костыль в виде собственной функции quote(), перекрывающей работу стандартной. Например, вот так:

try:
from shlex import quote as _quote
except ImportError:
from pipes import quote as _quote

if os.name == ‘nt':
def quote(arg):
return # впишите здесь свой вариант обработки
else:
quote = _quote

Другой выход — дождаться, когда починят вот этот запрос: https://github.com/cyberdelia/django-pipeline/issues/444


Comments Disabled:

Comments have been disabled for this post.

?

Log in