しかしこのreportlab、ローカルのSDKではバージョンが1.2になると以下のエラーが発生する。
対応方法は、以下のURLから1.9をダウンロードしてアプリケーションに上書きすること。
「Google App Engine プロジェクト ホームページ」
http://code.google.com/p/googleappengine/downloads/list
※検索条件で「All donwloads」を選択する
ちなみに、本番環境ではSDKの環境に関係なくreportlabでPDFを生成できました。
1.2.7では動きました(^^)V
やっぱり駄目でした。具体的には、
1. ソースコードをlatin-1で保存して実行すると、実行できる。
2. ソースコードをutf-8で再保存して実行すると、上記のエラーが発生する
3. ソースコードをlatin-1にもどしても、やはりエラーが発生する
4. アプリケーションの.pycファイルを削除すると、実行できる(1.の状態に戻る)
です。
どうやら、pythonで鬼門のエンコード周りでどこかに不具合があるようです。
ちなみにサーバにデプロイするか、1.1.9にバージョンダウンするとうまく動くという事は、1.2.X系のGAEのSDKに問題がありそう...
reportlabのエラーが出ている該当の行(確かif文がある)を、'return True'にすると問題なく動きました。本番にあげる時には元に戻す必要があります。
返信削除manage.pyに書いちゃだめか
返信削除とても参考になりました。ありがとうございます。
返信削除私の環境でも.pycがあるとエラーが発生しました。
とりあえずの処置として、manage.pyにreportlabの*.pycを削除する処理をいれました。
Index: manage.py
===================================================================
--- manage.py (revision 314)
+++ manage.py (working copy)
@@ -1,5 +1,8 @@
#!/usr/bin/env python
if __name__ == '__main__':
+ import os
+ os.system('find ./reportlab/ -name "*.pyc" | xargs rm')
+
from common.appenginepatch.aecmd import setup_env
setup_env(manage_py_env=True)