プリントデバッグ

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

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

関連記事

How to build kernel modules in armbian

Orangepi PC2でarmbianでlibrealsense、しちゃいましてね

Orangepi PC2でMovidius Neural Compute Stickを使う

さくらvpsでNEMスーパーノード構築 その4

さくらvpsでNEMスーパーノード構築 その3

Orangepi PC2でOpenCV3ビルドしてDNN使うぞうぉおおおおおおお

コメント

コメントを返信する

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