【blender】使用Vscode進行blender調試

配置vscode+blender

直接使用blender中的text editor沒有代碼補全,終端輸出通常和blender不在同一個頁面,只適合非常簡單的代碼測試。使用Vscode能有效提高blender調試的效率,具體方式見:VSCode 開發 Blender腳本工具配置。

調試進階版(包含遇到的一些錯誤的解決方法)

一般來說,調試步驟是這樣的:

  1. Ctrl+shift+P 選擇 Blender: Start,然后選擇你的blender的exe路徑
  2. Ctrl+shift+P 選擇 Blender: Run Scrip(如果你寫好腳本的話,也就是.py文件)

但是上面的步驟看起來只適合單個文件,如果你需要對非常大型的項目進行調試的話,執行上面的步驟非常可能出錯。

錯誤1:無法識別模塊

  File "D:\Software\blender-3.6.18-windows-x64\3.6\python\lib\runpy.py", line 96, in _run_module_code_run_code(code, mod_globals, init_globals,File "D:\Software\blender-3.6.18-windows-x64\3.6\python\lib\runpy.py", line 86, in _run_codeexec(code, run_globals)File "e:\temp\scene\main.py", line 3, in <module>from membank.utils.f import download_assets
ModuleNotFoundError: No module named 'membank'
Location: D:\Software\blender-3.6.18-windows-x64\3.6\scripts\modules\bpy\ops.py:111

這里 membank 是用戶自定義的模塊(也就是包含__init__.py文件的一個文件夾),但是在執行 Blender: Run Scrip后無法檢測到,原因是:Blender 自帶了一套 Python 解釋器(這里的是 D:\Software\blender-3.6.18-windows-x64\3.6\python\bin\python.exe),它和系統里的 Anaconda / Miniconda 或其他 Python 環境是隔離的。

解決方法:
將本地代碼(通常是你run script時的那個腳本)加入 sys.path

import syssys.path.append('membank目錄的上級目錄')from membank.xxxx import yyy # 正常導入

錯誤2:無法檢測到xxx包(python環境)

  File "e:\temp\scene\main.py", line 6, in <module>from membank.utils.f import download_assetsFile "E:\temp\scene\membank\utils\f.py", line 4, in <module>from membank.utils.pipeline import PipelineContextFile "E:\temp\scene\membank\utils\pipeline.py", line 6, in <module>from tqdm import tqdm
ModuleNotFoundError: No module named 'tqdm'
Location: D:\Software\blender-3.6.18-windows-x64\3.6\scripts\modules\bpy\ops.py:111

這個問題的核心是:

ModuleNotFoundError: No module named 'tqdm'

也就是說,Blender 自帶的 Python 環境中 沒有安裝 tqdm 模塊(一個常用的進度條庫),所以你的腳本在導入時失敗了。


? 為什么會出現這種情況?

Blender 內部使用的是 獨立的 Python 解釋器,它和你用 Conda、Pyenv、系統 Python 是隔離的。你平常在 VSCode 里 pip install tqdm 安裝的模塊,并不會自動出現在 Blender 的 Python 中。


? 解決方案:在 Blender 的 Python 環境里安裝 tqdm

🧩 步驟如下:
  1. 打開 CMD 或 PowerShell

  2. 進入 Blender 的 Python 路徑(3.6 目錄下)
    通常在這個路徑下:

D:\Software\blender-3.6.18-windows-x64\3.6\python\bin\python.exe
  1. 安裝 pip(如果還沒安裝)
D:\Software\blender-3.6.18-windows-x64\3.6\python\bin\python.exe -m ensurepip
  1. 用 Blender 的 Python 安裝 tqdm
D:\Software\blender-3.6.18-windows-x64\3.6\python\bin\python.exe -m pip install tqdm

錯誤3:參數錯誤(argparse解析錯誤)

Got POST: {'type': 'script', 'path': 'e:\\temp\\scene\\main.py'}
127.0.0.1 - - [17/Jul/2025 00:12:54] "POST / HTTP/1.1" 200 -

看起來我已經成功發送了請求 但是沒有任何響應,連打印的結果都沒有出現

你這邊遇到的情況是:Blender 調用了你的 main.py,但是沒有任何輸出,甚至 print() 的內容也沒有出現。這通常有以下幾種可能原因:


? 1. 腳本邏輯本身沒有進入你以為執行的部分

例如你寫了:

if __name__ == '__main__':print("Hello")

??在 Blender 中通過 runpy.run_path() 執行腳本時,__name__ != '__main__',所以這段代碼不會運行!


? 正確做法

你應該把你要執行的內容,直接放到腳本的頂層或者函數中,例如:

def main():print("This is running in Blender")main()

? 2. Blender 執行了腳本,但被某個隱藏的錯誤中斷了

這時不會有明顯錯誤信息,除非你加上調試或 try-except。

如果哪一步失敗了,打印的信息可以幫你定位。


? 3. args 根本沒傳入,或者你在頂層用到了 argparse

Blender 運行 .py 腳本不會傳遞 sys.argv 給你像 argparse 那樣使用。

如果你有類似:

args = parser.parse_args()

這在 Blender 中通常不會得到你期望的參數。

你遇到的錯誤是:

main.py: error: unrecognized arguments: --python c:\Users\ASUS\.vscode\extensions\jacqueslucke.blender-development-0.0.25\pythonFiles\launch.py

? 問題本質:

你的 main.py 使用了 argparse 解析命令行參數:

parser = argparse.ArgumentParser()
args = parser.parse_args()

但是在 Blender 中通過 VSCode 插件運行 Python 腳本時,它會自動向你的腳本傳入一堆你 沒有定義的參數,例如:

--python c:\xxx\launch.py

于是 argparse 報錯:unrecognized arguments


? 解決方案:不要用 argparse,而是手動構造參數類

最推薦用于 Blender 調試:

class Args:json = "scene_json/6.json"output_dir = "output/6"input_image = ""input_text = ""input_scene = "scene_json/6.json"wall_height = 3.2export_glb = Falseargs = Args()

然后直接調用你的主函數:

test_export2blender(args)

這樣你在 VSCode + Blender 插件調試中,就能看到逐步輸出和錯誤信息了。


不過except Exception as e: print("Exception occurred:", e) 這種寫法無法顯示具體是哪一行代碼出錯。

為了 在 VSCode + Blender 插件中調試時獲得詳細錯誤信息,你可以使用 traceback 模塊來打印完整的異常棧信息。

import tracebackdef main():print("Start script inside Blender")class Args:json = "scene_json/6.json"output_dir = "output/6"input_image = ""input_text = ""input_scene = "scene_json/6.json"wall_height = 3.2export_glb = Falseargs = Args()try:test_export2blender(args)print("Script completed successfully.")except Exception as e:print("Exception occurred:")traceback.print_exc()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89458.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89458.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Au速成班-樂理知識補充+網頁下載音樂

音質分類 通過查看音頻頻譜&#xff0c;128Kbps、192Kbps、320Kbps、無損&#xff08;Lossless HD&#xff09;CD音質&#xff08;頻率都在20kHz以上&#xff09;。 各家平臺對無損的定義不一樣&#xff0c;em各有說法吧。 無損的含義是&#xff1a;無損失的聲音格式。只要能…

JAVA中的Collection集合及ArrayList,LinkedLIst,HashSet,TreeSet和其它實現類的常用方法

文章目錄前言一、Collection 接口常用方法1.boolean add(E e)2.boolean remove(Object o)3.boolean contains(Object o)4.boolean isEmpty()5.int size()6.void clear()7.Object[] toArray()8.boolean containsAll(Collection<?> c)9.boolean addAll(Collection<? e…

有n棍棍子,棍子i的長度為ai,想要從中選出3根棍子組成周長盡可能長的三角形。請輸出最大的周長,若無法組成三角形則輸出0。

題目描述&#xff1a; 有n棍棍子&#xff0c;棍子i的長度為ai&#xff0c;想要從中選出3根棍子組成周長盡可能長的三角形。請輸出最大的周長&#xff0c;若無法組成三角形則輸出0。 算法為O(nlogn) 初始理解題目 首先&#xff0c;我們需要清楚地理解題目要求&#xff1a; 輸入…

【Echarts】 電影票房匯總實時數據橫向柱狀圖比圖

效果圖code <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>圓角柱狀圖</title><script src"https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js"></script> </head> <…

【深度學習基礎】PyTorch中model.eval()與with torch.no_grad()以及detach的區別與聯系?

目錄1. 核心功能對比2. 使用場景對比3. 區別與聯系4. 典型代碼示例(1) 模型評估階段(2) GAN 訓練中的判別器更新(3) 提取中間特征5. 關鍵區別總結6. 常見問題與解決方案(1) 問題&#xff1a;推理階段顯存爆掉(2) 問題&#xff1a;Dropout/BatchNorm 行為異常(3) 問題&#xff1…

博客摘錄「 華為云平臺-FusionSphere OpenStack 8.2.1 系統加固」2025年7月15日

編號 加固項 "風險 等級" 加固原理/Rationale 審計方法/Audit 期望結果/Expect Results 加固方法/Remediation 1 OpenSSH加固配置 1.1 OpenSSH加固配置 1.1.1 SSH使用的版本 H "Op…

永磁同步電機MTPA與MTPV曲線具體仿真實現

永磁同步電機MTPA與MTPV曲線具體仿真實現 近期做了一些標定試驗&#xff0c;實際電機參數并不是確定的&#xff0c;而是變化的&#xff0c;因此很難通過解析的方法算出MTPA的對應點&#xff0c;以及在弱磁區如何過度到MTPV。這個在實際情況下都是一點點標出來的&#xff0c;我這…

Adobe Acrobat 插件功能、應用與開發

什么是 Acrobat 插件&#xff1f; Adobe Acrobat 插件是一種能夠擴展 Adobe Acrobat 閱讀器/查看器功能的軟件組件。Acrobat 是用于查看、創建和編輯 PDF 文檔的流行程序&#xff0c;而插件可以為其添加新功能&#xff0c;例如&#xff1a; #mermaid-svg-iqdM1wLkFQhd3ilQ {fon…

Redis學習系列之——高并發應用的緩存問題(二)

一、布隆過濾器布隆過濾器由一個 BitMap 和若干 Hash 函數組成&#xff0c;可以用來快速判斷一個值是否存在后端存儲中。它是解決 Redis 緩存穿透問題的一個不錯的解決方案。工作原理步驟1&#xff1a;當 key-value 鍵值對存儲到 Redis 后&#xff0c;向布隆過濾器添加 key步驟…

Expression 類的靜態方法

public static MethodCallExpression Call(Type type, // 包含目標方法的類型string methodName, // 方法名稱Type[]? typeArguments, // 泛型方法的類型參數&#xff08;非泛型方法為 null&#xff09;params Expression[]? arguments // 方…

[Nagios Core] 事件調度 | 檢查執行 | 插件與進程

第五章&#xff1a;事件調度 歡迎回到Nagios Core&#xff01; 在上一章第四章&#xff1a;配置加載中&#xff0c;我們了解了Nagios如何讀取配置文件以知曉需要監控的對象&#xff0c;比如我們的朋友"Web Server 1"。此時Nagios內存中已構建完整的基礎設施拓撲圖。…

Web3 常用前端庫介紹

一、Web3 前端開發&#xff1a;連接用戶與區塊鏈的橋梁 隨著 Web3 生態的蓬勃發展&#xff0c;前端開發從傳統的頁面渲染進化為區塊鏈交互的核心樞紐。Web3 前端庫作為連接用戶與區塊鏈的橋梁&#xff0c;承擔著錢包集成、合約交互、數據可視化等關鍵功能。本文將系統解析主流 …

cnpm命令報internal/modules/cjs/loader.js:797 throw err; ^ Error: Cannot find

在運行一個項目的時候&#xff0c;需要升級電腦各組件的版本&#xff0c;結果導致cnpm命令無法正常使用&#xff0c;cnpm任何命令都會報如下這個錯&#xff1a;找了半天&#xff0c;發現是由于cnpm與npm的版本不一致導致的&#xff0c;所以需要卸載并重新安裝cnpm&#xff0c;重…

15、鴻蒙Harmony Next開發:創建自定義組件

目錄 自定義組件的基本用法 自定義組件的基本結構 struct Component freezeWhenInactive build()函數 Entry EntryOptions Reusable 成員函數/變量 自定義組件的參數規定 build()函數 自定義組件生命周期 自定義組件的創建和渲染流程 自定義組件重新渲染 自定義…

深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()

文章目錄深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()1. 方法定義comparingByKey()comparingByValue()2. 基本用法2.1 使用comparingByKey()2.2 使用comparingByValue()3. 方法重載版本comparingByKey(Comparator)comparingByValue(Comparator)4. 高級用…

Mac下載mysql

安裝 brew list --versions | grep mysql查看已安裝的mysql版本brew search mysql查看支持的mysql版本brew info mysql查看mysql版本信息brew install mysql進行安裝/opt/homebrew/opt/mysql/bin/mysqld --initialize-insecure --user$(whoami) --basedir$(brew --prefix mysql…

PageHelper使用說明文檔

文章目錄一、簡介二、集成步驟三、使用方法四、注意事項五、高級用法一、簡介 PageHelper 是一個開源的 MyBatis 分頁插件&#xff0c;它可以幫助我們在使用 MyBatis 進行數據庫操作時方便地實現分頁功能。通過簡單的配置和少量的代碼修改&#xff0c;就可以在查詢數據時實現分…

grpo nl2sql qwen3 模型強化學習訓練有效果的成立條件有哪些

在使用GRPO&#xff08;強化學習算法&#xff09;對Qwen3模型在NL2SQL&#xff08;自然語言到SQL轉換&#xff09;任務上進行強化學習&#xff08;RL&#xff09;訓練時&#xff0c;其效果成立的核心條件可歸納為以下幾個關鍵維度&#xff0c;這些條件相互關聯&#xff0c;共同…

面向向量檢索的教育QA建模:九段日本文化研究所日本語學院的Prompt策略分析(6 / 500)

面向向量檢索的教育QA建模&#xff1a;九段日本文化研究所日本語學院的Prompt策略分析&#xff08;6 / 500&#xff09; 系列說明 500 所日本語言學校結構化建模實戰&#xff0c;第 6 篇。每篇拆解 1 所學校在 Prompt-QA 系統中的建模策略&#xff0c;分享工程經驗&#xff0c;…

墨刀原型圖的原理、與UI設計圖的區別及轉換方法詳解-卓伊凡|貝貝

墨刀原型圖的原理、與UI設計圖的區別及轉換方法詳解-卓伊凡|貝貝最近有個設計由于時間比較倉促直接用 原型做的&#xff0c;但是原型做的大家都知道是沒法用的&#xff0c;以下講解原型和ui的區別&#xff0c;其次我們下面有三種方法把墨刀的原型變成UI圖。一、墨刀原型圖的原理…