2011-01-29 10 views
0

スクリプトがBabel関数を呼び出すときにPython Babelパッケージからこの例外がスローされています。私がコマンドラインから実行すると、大丈夫です。しかし、これは私がcronから実行するとエラーです。それは、いくつかの環境やロケールの設定や不足に関連するかもしれませんが、思われます。Python:なぜcronから呼び出したときにBabelからこの例外が出ますか?

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' 

のcronなしから呼び出された場合、コマンドラインのロケールから呼び出さUPDATE

はen_USです。 cronから呼び出すときはどうすれば設定できますか?

また、これが重要かどうかはわかりませんが、Babelを呼び出すスクリプトはカスタムのdjango-adminコマンドです。

+0

このようです。例外が発生した場所の近くで 'print locale'を押して、あなた自身とcronから実行したときにローカルの値を表示できますか? –

+0

コマンドラインen_USから呼び出され、cronから呼び出されたときなし。 – Ambrosio

+1

cronであなたのコマンドとして試してください: LOCALE = en_US ./your_script – Harmen

答えて

1

cronが環境変数を少なく設定するため、Babelはデフォルトのロケール(LC_TIME)を検出できませんでした。

これは明示的にbabel.dates.LC_TIME = Locale.parse('en_US')に設定できます。 Babel 0.9.6もチェックしてください。デフォルトのロケール検出ではいくつか修正されています。

関連する問題