【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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图。一、墨刀原型图的原理…