使い方
手段
print
: コマンドプロンプトに文字列を出力する- bpy.types.Operator.report: オペレーターの情報を出力する (
'INFO'
/'ERROR'
) - VSCode リモートデバッグ (debugpy )
- PyDev.Debugger を VSCode で使う (pydevd / Python Debugger)
ドキュメント:
print | Python 3.x Documentation [Official]
bpy.types.Operator.report | Blender Python API [Official]
参考:
アドオンをデバッグする | はじめての Blender 2.7 アドオン開発
How can I debug a script in real-time? – Blender Stack Exchange
print 関数
ドキュメント:
print | Python 3.x Documentation [Official]
Operator
bpy.types.Operator.report メソッドを用いて、オペレーターの実行状況をユーザーに知らせる。通常は、'INFO'
または 'ERROR'
を使っておけばよい。
使用例
class ExampleOperator(bpy.types.Operator):
# ...
def execute(self, context):
self.report({'INFO'}, "Info report from ExampleOperator");
return {'FINISHED'}
Code language: Python (python)
レポートの種類
'DEBUG'
: デバッグ'INFO'
: 情報'OPERATOR'
'PROPERTY'
'WARNING'
: 警告'ERROR'
: エラー'ERROR_INVALID_INPUT'
'ERROR_INVALID_CONTEXT'
'ERROR_OUT_OF_MEMORY'
ドキュメント:
bpy.types.Operator.report | Blender Python API [Official]
参考:
UI パネルの処理にエラーメッセージの表示を追加する | MR が楽しい
How can I catch reports from Operators? – Blender Stack Exchange
ロガー (logging)
ドキュメント:
logging – Logging Facility | Python 3.x Documentation [Official]
VSCode でデバッグする
- debugpy を使う。
手順
- Blender 付属の Python 環境に「debugpy」をインストールする。
- アドオンフォルダを VSCode で開き、プロジェクト用にデバッグ環境 (
.vscode/launch.json
) を設定する。 - アドオンの初期化スクリプトでリモートデバッグサーバーを起動する。
デバッグ環境
- VSCode でプロジェクトを開き、左端のアクティビティバーで「実行とデバッグ」ビューに切り替える。(
Ctrl
+Shift
+D
キー) - 環境を設定していない場合は、「launch.json ファイルを作成します」というリンクをクリックして プロジェクト用にデバッグ環境設定ファイル (
launch.json
) を作成する。作成済みの場合は、歯車アイコン から設定ファイルを開ける。 - 設定ファイルに次のような内容を記述する。
{
"version": "0.2.0",
"configurations": [
{
"name": "Blender",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}"
}
],
"justMyCode": true
}
]
}
Code language: JSON / JSON with Comments (json)
リモートデバッグサーバー
アドオンの初期化スクリプト __init__.py
にリモートデバッグサーバーを起動するコードを追加する。register
関数で debugpy
モジュールをインポートし、debugpy.listen
メソッドを呼び出す。
def register():
try:
import debugpy
debugpy.listen(('localhost', 5678))
print("Waiting for debugger attach")
except ImportError:
pass
# ...
Code language: Python (python)
注意事項
sys.settrace
とリモートデバッグは併用できないため注意する。
ドキュメント:
Debugging | Visual Studio Code [Official]
Using debugby in Visual Studio Code – FAQ – debugpy Wiki – GitHub
listen – API Reference – debugpy Wiki – GitHub
リポジトリ:
microsoft/debugpy: An Implementation of the Debug Adapter Protocol for Python – GitHub
入手:
参考:
アドオンをデバッグする | はじめての Blender アドオン開発
Remote attach – Breakpoint in file that does not exist · Issue #318 · microsoft/debugpy – GitHub
Visual Studio でデバッグする
ドキュメント:
Visual Studio – Debugging Python | Blender Developer Wiki [Official]
Linux 上の Python コードをリモートデバッグする | Microsoft Docs [Official]
参考:
Trouble debugging Blender Python using Visual Studio 2019 – Stack Overflow
Eclipse でデバッグする
ドキュメント:
Debugging Blender from Eclipse | Blender Developer Wiki [Official]
参考:
アドオンをデバッグする | はじめての Blender 2.7 アドオン開発
Debugging Blender from Eclipse | wiki.blender.jp
Python, Blender and a Bit of Debuggery | Dani Epstein
Eclipse for debugging python in Blender – Blender Artists Community
debug and step through addon? – Blender Stack Exchange
PyCharm でデバッグする
ドキュメント:
Debugging Python Code with PyCharm | Blender Developers Blog [Official]
Python Remote Debug with PyCharm | PyCharm Blog [Official]
参考:
PyCharm remote debugger – Blender Stack Exchange
Python Debugger (Fabio Zadrozny)
- VSCode 拡張
- PyDev.Debugger を使用する (→ pydevd )
入手:
Python Debugger (PyDev) | Visual Studio Marketplace [Official]
ドキュメント:
PyDev on VSCode | PyDev [Official]
PyDev.Debugger (pydevd)
リポジトリ:
fabioz/PyDev.Debugger: Sources for the Debugger Used in PyDev, PyCharm and VSCode Python – GitHub
入手:
リンク:
debugpy
Blender の Python 環境にインストールする。Blender を起動し、Python コンソールで次のコードを実行する。
>>> import subprocess, sys; print(subprocess.run([sys.executable, "-m", "pip", "install", "debugpy"], stdout=subprocess.PIPE, text=True).stdout)
リポジトリ:
microsoft/debugpy: An Implementation of the Debug Adapter Protocol for Python – GitHub
入手:
参考:
Blender 用 Python コードを VSCode で書くための環境構築メモ | ao;eth
ptvsd
**DEPRECATED**
後継の「debugpy」を使用する。
リポジトリ:
microsoft/ptvsd: Python Debugger Package for Use with Visual Studio and Visual Studio Code – GitHub
入手:
Blender Debugger for VSCode
Blender アドオン
動画:
How to Remote Debug Blender with VSCode
リポジトリ:
Python Debugger (Hextant Studios)
Blender アドオン
リポジトリ:
参考:
Debugging Blender Add-ons | Hextant Studios
pdb
ドキュメント:
pdb – Python デバッガ | Python 3.x ドキュメント [公式]
参考:
Can I run a Python script step by step in Blender? – Blender Stack Exchange
Remote Debugger (Sybren A. Stüvel)
コード:
remote_debugger.py – sybrenstuvel/random-blender-addons – GitHub