LINUX.ORG.RU

отладка django приложений


0

0

Только начал изучать Django. В качестве хеллоуворлда пишу очередной велосипед - вебмонитор для rtorrent.

Напрягает только одно. При любой опечатке, ошибке - выводится большой трейсбек, заканчивающийся строчками ImportError: cannot import name WEEKDAYS_ABBR.

Причем никакие datetime и вообще даты не используются. Нахождение ошибки при этом очень сильно затруднено, когда не знаешь, где копать. Пока в проекте не больше 100 строк, это ещё терпимо...

Как это можно пофиксить? или это фича?

> заканчивающийся строчками ImportError: cannot import name WEEKDAYS_ABBR.

Ищем в исходниках соответствующее имя и правим

> Как это можно пофиксить? или это фича?

Можно использовать отладочный сервер, тогда в консоли будет еще много полезной информации...

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

В моих исходниках такого точно нет. Получается баг джанги?

А с отладочным сервером всё точно так же. В консоли тоже, что и в браузере. Что под встроенным, что под апачем.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

> Получается баг джанги?

скорее всего ты её заставил так глючить :). У джанги стандартный недуг многих питоновских прог: она не проверяет свои аргументы и может свалиться в самый неожиданный момент. Смотри трейсы и найдёшь свою функцию которая делает что-то нехорошее.

Тут у чувака те же проблемы :) http://oebfare.com/logger/django/?page=5452

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

ога, короче, это при кривом апгрейде джанги происходит. deinstall and install it

true_admin ★★★★★
()
Ответ на: комментарий от Unnamed_Hero

> В моих исходниках такого точно нет. Получается баг джанги?

Не исключено. А какя версия джанги?

eugine_kosenko ★★★
()
Ответ на: комментарий от true_admin

> Тут у чувака те же проблемы :) http://oebfare.com/logger/django/?page=5452

И похоже, проблема в первой бете :-). У меня 0.97. Кстати,

$ grep -r WEEKDAYS_ABBR /usr/lib/python2.5/site-packages/django/
.../utils/dates.py:WEEKDAYS_ABBR = {
.../utils/dateformat.py: from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
.../utils/dateformat.py: return WEEKDAYS_ABBR[self.data.weekday()]

$ python manage.py shell
...
>>> from django.utils.dates import WEEKDAYS_ABBR

>>>


Как видите, все нормально. Попробуйте то же из шелла сделать.

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

У меня 1.0, релиз.

grep -r WEEKDAYS_ABBR /usr/lib/python2.5/site-packages/django/
/usr/lib/python2.5/site-packages/django/utils/dateformat.py:from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
/usr/lib/python2.5/site-packages/django/utils/dateformat.py: return WEEKDAYS_ABBR[self.data.weekday()]


>>> from django.utils.dates import WEEKDAYS_ABBR
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name WEEKDAYS_ABBR


Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

А по поводу функций - если какая-то функция (у меня их всего, блин, 2, и один шаблон) содержит ошибку/опечатку, то вываливается эта ошибка.

Конечно, может, я что-то накосячил, но когда код без ошибок - работает же.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

Если Вы ничего не резали в выводе grep, то, похоже, плохой файл

/usr/lib/python2.5/site-packages/django/utils/dates.py

Проверьте его наличие, а если он есть, то наличие в нем объявления
вида

WEEKDAYS_ABBR = {
    0:_('Mon'), 1:_('Tue'), 2:_('Wed'), 3:_('Thu'), 4:_('Fri'),
    5:_('Sat'), 6:_('Sun')
}

На всякий пожарный, вот полное содержимое этого файла (взято от 0.97):

====================================================================
"Commonly-used date structures"

from django.utils.translation import ugettext_lazy as _

WEEKDAYS = {
    0:_('Monday'), 1:_('Tuesday'), 2:_('Wednesday'), 3:_('Thursday'), 4:_('Friday'),
    5:_('Saturday'), 6:_('Sunday')
}
WEEKDAYS_ABBR = {
    0:_('Mon'), 1:_('Tue'), 2:_('Wed'), 3:_('Thu'), 4:_('Fri'),
    5:_('Sat'), 6:_('Sun')
}
WEEKDAYS_REV = {
    'monday':0, 'tuesday':1, 'wednesday':2, 'thursday':3, 'friday':4,
    'saturday':5, 'sunday':6
}
MONTHS = {
    1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),
    7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'),
    12:_('December')
}
MONTHS_3 = {
    1:_('jan'), 2:_('feb'), 3:_('mar'), 4:_('apr'), 5:_('may'), 6:_('jun'),
    7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec')
}
MONTHS_3_REV = {
    'jan':1, 'feb':2, 'mar':3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8,
    'sep':9, 'oct':10, 'nov':11, 'dec':12
}
MONTHS_AP = { # month names in Associated Press style
    1:_('Jan.'), 2:_('Feb.'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'), 7:_('July'),
    8:_('Aug.'), 9:_('Sept.'), 10:_('Oct.'), 11:_('Nov.'), 12:_('Dec.')
}
====================================================================

Хотя не исключено, что это в самом деле косяки установки, может,
в самом деле легче будет полностью переустановить Джангу.

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

Пополз сверять то, что в пакете и на самом деле. так и оказалось - файл dates.py оказался другого размера, запуск python setup.py install проблему НЕ решил. Скопировал руками. Всё заработало. Спасибо за конструктивный диалог. SOLVED.

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

так я тебе говорил, надо переустановить django. Лучше снеси её и поставь снова, а то нарвёшься ещё на какие-нить глюки.

true_admin ★★★★★
()

Ещё pyc надо вычищать, в рассылке куча сообщений о проблемах, которые решаются таким образом.

Sphinx ★★☆☆
()
Ответ на: комментарий от Unnamed_Hero

python setup.py install --force

Вот правильная команда для реинстала.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.