プリントデバッグ

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(修正済み)をインストール

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

関連記事

香港ー深圳で一番便利になった広深港高速鉄道の乗り方・買い方

PC・タブレットでgoogle翻訳を活用する英語論文読み環境

Zortrax m200の反り対策

振動吸収カメラマウントの三脚穴付きのやつ作った

iRangeXのドローン用プロポを修理する

blenderで操作不能になったら見るまとめ

コメント

コメントを返信する

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