プリントデバッグ
Blenderのaddonはpythonで書くのですが、開発時にプリントデバッグができないのが難点です。
エラーメッセージはinfo windowに表示されますが、プリント結果は見ることが出来ません。
workaround 1: ターミナルから起動
blenderをターミナルから起動することで、標準出力がターミナル上に出力されます。
デメリットは、めんどくさいことですね。
workaround 2: ログファイルを吐く
ターミナルから毎回起動するのはめんどくさいので、プロジェクトファイルと同じディレクトリにログファイルを吐くようにしています。
これは、__init__.pyに以下を記述することで可能です。(必要なところだけを記述しています。)
import bpy
import logging
logger = logging.getLogger()
file_handler = logging.FileHandler(
"hogehoge.log", mode="w")
formatter = logging.Formatter(
fmt="[%(asctime)s] %(levelname)s [%(name)s/%(funcName)s() at line %(lineno)d]: %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.setLevel(logging.DEBUG)
class HogeHoge(bpy.types.Operator):
def execute(self, context):
logger.debug("hogehoge")
return {"FINISHED"}
再起動タイミング
__init__.py上で他のpythonファイルを読み込んでいる場合、blenderの起動時にコンパイルされ*.pycが生成されます。
したがって__init__.pyで読み込まれているコードを修正した場合、addonを削除 → 再インストール しても変更が反映されません。
- addonを削除
- blenderを再起動
- addon(修正済み)をインストール
という手順を踏む必要があります。
コメント