プリントデバッグ

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を削除 → 再インストール しても変更が反映されません。

  1. addonを削除
  2. blenderを再起動
  3. addon(修正済み)をインストール

という手順を踏む必要があります。

関連記事

blenderでオブジェクトのキーフレームを途中からごっそり入れ替える

MiSTEL BAROCCO MD650Lの持ち運びにはあのケースがぴったり

高層を拒否し、「ニュー オールドタウン」を選択したフランクフルトの市民参加型都市計画

echo spotでスマホを持ってない人とテレビ電話をする方法

MiSTEL BAROCCO MD650Lをbluetooth接続にしてmobilityを爆上げ

MiSTEL BAROCCO MD650Lを持ち運びやすくするマグネット足を作った

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です