Я разработчик » Python

Django-pipeline converter on windows issue

Django, Python, Разработка Комментариев нет

Столкнулся со следующей проблемой. 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

О South и syncdb в двух словах

App Engine, CloudSQL, Django, Python, Модули, Разработка, Расширения, Совместная работа, Фишки Один комментарий

Начну с определения. South — приложение Django для осуществления миграций. У меня это слово всегда вызывало больше вопросов, чем ответов поэтому, лучше расскажу что к чему.
Когда мы пишем/меняем модель нам необходимо создавать/менять структуру данных в самой базе. Если мы просто создаем модель, то с этой задачей справляется syncdb, но когда мы вносим изменения в модель syncdb оказывается беспомощной, и мы остаемся один на один со структурой данных в базе не отвечающей требованиям кода (моделей). Читать далее »

Python SSL на windows

App Engine, Python, Библиотеки, Разработка Комментариев нет

Случилось так, что встала необходимость установить модуль SSL для питона. Его давно просил AppEngine SDK. Читать далее »

xhtml2pdf и вертикальное выравнивание в таблице

Django, Python, Библиотеки, Разработка, Фишки Комментариев нет

Так уж случилось, что для генерации PDF в приложении использую библиотеку xhtml2pdf. Библиотека позволяет сгенерировать PDF на основе HTML + CSS. Однако, поддержка CSS не совсем полная. Некоторые правила игнорируются, а комплексное применение правил иногда не приводит к нужному результату.

Например, столкнулся с ситуацией, когда "игнорировались" отступы внутри ячейки. Строка оставалась прилепленной к верхней границе. При этом, padding-top для td как бы игнорировался. Оказалось, что рендер определяет центр строки и правила ее выравнивания по вертикали несколько иначе, чем браузер. Картина исправилась, когда было выставлено свойство line-height: 75%.

Изящный способ определить предыдущий месяц в python

Python Комментариев нет

Довольно изящный способ получить номер предыдущего месяца в python

month = datetime.datetime.now().month — 1 or 12

Партиции в Appengine SDK

App Engine, Python, Разработка Комментариев нет

Недавно я описывал проблему с локальным хранилищем Appengine SDK. Начиная с версии 1.5.2 SDK разделяет партиции в datastore и по умолчанию использует отдельную именованную партицию (в моем случае, "dev~"). Для того, чтобы можно было использовать унаследованный от предыдущих версий datastore-файл, следует запускать сервер разработки appengine с ключом —default_partition=""

Немного дополнительной информации о релизе 1.5.2

Appengine SDK 1.5.3 — сюрприз с datastore

App Engine, Python, Разработка Комментариев нет

Обожаю разработчиков SDK для Appengine. Особенно за заботу об удобстве разработчиков и сохранности локальных тестовых данных. Обновил SDK до 1.5.3, запускаю сервер разработки — а база пуста. После ковыряний (гугление не помогло, кстати) выяснилось, что новый SDK ищет данные в хранилище по APP_VERSION~APP_ID вместо APP_ID.

AppEngine SDK Memory Leaks

App Engine, Google, Python, Инструменты, Разработка, Фреймфорки Один комментарий

Я довольно редко пишу о том, чем занимаюсь основное время, но тут не могу не поделиться наблюдениями по поводу прожорливости до памяти сервера разработки из SDK Appengine для Python. Читать далее »

Python в PHP

PHP, Python, Библиотеки, Разработка Комментариев нет

PiP — интересное расширение для PHP, позволяющее встраивать код на Python. Примеры и особенности можно посмотреть здесь.

Delphi + Pyhton

Delphi, Python Один комментарий

После нескольких часов шаманства с бубном удалось все-таки запустить Python for Delphi. Работает на удивление шустро. Читать далее »