Python: Почему я получаю это исключение от Babel при звонке из cron? - PullRequest
0 голосов
/ 29 января 2011

Я получаю это исключение из пакета Python Babel, когда мой скрипт вызывает функцию Babel.Дело в том, что когда я запускаю его из командной строки, он работает нормально.Тем не менее, это ошибка, которую я получаю при запуске из cron.Кажется, что это может быть связано с какой-то средой или локалью, или ее отсутствием.

File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 508, in format_datetime
       return parse_pattern(format).apply(datetime, locale)
     File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 702, in apply
       return self % DateTimeFormat(datetime, locale)
     File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 699, in __mod__
       return self.format % other
     File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 724, in __getitem__
       return self.format_month(char, num)
     File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 793, in format_month
       return get_month_names(width, context, self.locale)[self.value.month]
     File "/home/myproj/lib/python2.6/Babel-0.9.5-py2.6.egg/babel/dates.py", line 87, in get_month_names
       return Locale.parse(locale).months[context][width]
   AttributeError: 'NoneType' object has no attribute 'months'

ОБНОВЛЕНИЕ

При вызове из командной строки локаль en_US и при вызове из cron НетКак установить его при вызове из cron?

Кроме того, не знаю, важно ли это, но скрипт, который вызывает Babel, - это пользовательская команда django-admin.

1 Ответ

1 голос
/ 08 апреля 2013

Babel не удалось обнаружить локаль по умолчанию (для LC_TIME), потому что cron устанавливает меньше переменных среды.

Вы можете установить это явно babel.dates.LC_TIME = Locale.parse('en_US'). Также ознакомьтесь с Babel 0.9.6 - там есть некоторые исправления в определении локали по умолчанию.

...