Blender Python 插件 Visual Studio Code 調試方案
(很奇怪,我只改了 6DOF 滑鼠的控制方式,怎麼會影響到這個插件……)
我一直用的編輯器是 Visual Studio Code。這個編輯器自在 2015 年三月剛發布的時候我就開始作為主力編輯器(稱為 IDE 也行)來用了。我的遊戲 Gravity Voyager 絕大多數代碼就是用它寫的。於是自然我想用 VS Code 來調試 Archimesh python 腳本插件。不過,沒有現成的解決方案,只有用 Pycharm/Eclipse 的方法。
所以,還是自己擼起袖子干吧。我參照 Pycharm 調試器的方法,寫了一個插件腳本:
Debugging Support for Visual Studio CodePrerequest: PTVSD module should have been installed (using pip to install), also the Python (by Don Jaymanne) plugin of VSCode.After this add-on installed and activated, press [Spacebar] then search connect, select "Connect to Visual Studio Code Debugger" to start forwarding debugging information to VSCode.In VSCode, configure the debugger to "Remote", then you can start debugging in VSCode.Author: Zhang Bo-NingInspired by https://github.com/sybrenstuvel/random-blender-addons/blob/master/remote_debugger.pybl_info = { name: Debugger for Visual Code, author: Zhang Bo-ning, version: (0, 1), blender: (2, 78, 0), location: Press [Space], search for "debugger", category: Development,}import bpyimport sysimport osfrom bpy.types import AddonPreferencesfrom bpy.props import StringPropertyclass DebuggerAddonPreferences(AddonPreferences): bl_idname = __name__ ptvsdPath = StringProperty( name=Path of PTVSD module, subtype=DIR_PATH, default=/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages ) def draw(self, context): layout = self.layout layout.prop(self, ptvsdPath) layout.label(text=Path for PTVSD module. In macOS, path should be something like: "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages")class Debug_Connect_To_Vscode(bpy.types.Operator): bl_idname = debug.connect_debugger_vscode bl_label = Connect to Visual Studio Code Debugger bl_description = Connect to the remote visual studio debugger def execute(self, context): user_preferences = context.user_preferences addon_prefs = user_preferences.addons[__name__].preferences ptvsdPath = os.path.abspath(addon_prefs.ptvsdPath) if not os.path.exists(ptvsdPath): self.report({ERROR}, Unable to find PTVSD module at %r. Configure the addon properties in the User Preferences menu. % ptvsdPath) return {CANCELLED} if not any(ptvsdPath in p for p in sys.path): sys.path.append(ptvsdPath) import ptvsd ptvsd.enable_attach("my_secret", address = (0.0.0.0, 3000)) return {FINISHED} def register(): bpy.utils.register_class(Debug_Connect_To_Vscode) bpy.utils.register_class(DebuggerAddonPreferences) def unregister(): bpy.utils.unregister_class(Debug_Connect_To_Vscode) bpy.utils.unregister_class(DebuggerAddonPreferences)if __name__ == __main__: register()
把這個腳本保存為 Python 文件。然後,確保電腦里安裝了 PTVSD 模塊,沒有的話可以用 pip 安裝一下。VSCode 下也要安裝 Python 插件。用 Blender 安裝上面的腳本插件,把 PTVSD 模塊所在的目錄設置正確(一般即為 site-package 這個目錄),激活之。激活後,按空格,輸入類似 connect 或者 debug 找到 「Connect to Visual Studio Code Debugger」 命令,執行即可讓 Blender 通過本機 3000 埠發送調試信息。
在 Visual Studio Code 下,打開調試器,設置斷點、運行。第一次可能 VSCode 會詢問調試模式,把調試模式設置為 Remote。運行後 VSCode 調試器會監聽 3000 埠 Blender 發送的調試信息。在 Blender 里執行插件腳本,如果一起正常,執行到 VSCode 里設置的斷點處,就可以像調試其他 Python 程序那樣調試 Blender 插件腳本了(如上面那張圖那樣)。
插件代碼可以在 GitHub 上下載:Barbarbarbarian/Blender-VScode-Debugger
-
最後,我發現 Archimesh 插件崩了的原因不是因為我的改動,因為我發現用 Blender 官方的 latest build 二進位程序運行照樣有問題。嗯,這個鍋我不該我去背……
推薦閱讀:
※vcxsrv轉發vbox的vs code莫名卡頓,誰的鍋,怎麼解決?
※Visual Studio Code會開源嗎?
※如何解決VS Code在win10 1607 高分屏,縮放125%的情況下字體模糊的問題?
※visual studio code 可以配置c++ 一鍵編譯運行嗎?
TAG:Blender | Python | VisualStudioCode |