含bpy模块的Python脚本转exe失败问题求助
问题分析
- 用auto-py-to-exe打包依赖
bpy的Python脚本时,出现scripts/modules、bpy_types、_bpy等模块缺失报错,且报错路径指向旧版Blender 3.4,核心原因:bpy是Blender内置专属模块,依赖Blender完整的Python环境与二进制运行库,普通Python环境无法正确识别其依赖结构。- 系统环境或
bpy模块配置中残留了旧版Blender的路径信息。
解决方案
1. 切换到Blender自带的Python环境打包
bpy仅能在Blender内置的Python环境中正常工作,必须用Blender 3.5自带的Python安装并运行auto-py-to-exe:
- 找到Blender 3.5的Python路径,示例:
C:\Program Files\Blender Foundation\Blender 3.5\3.5\python\bin - 打开命令行进入该目录,执行:
python.exe -m pip install auto-py-to-exe - 启动auto-py-to-exe:
python.exe -m auto_py_to_exe
2. 完整添加bpy的所有依赖文件
bpy包含大量二进制模块(如_bpy.pyd),仅添加.py文件无法满足需求:
- 在auto-py-to-exe的「Additional Files」中,添加Blender 3.5的
bpy模块完整目录(路径示例:C:\Program Files\Blender Foundation\Blender 3.5\3.5\python\Lib\site-packages\bpy) - 额外添加Blender根目录下的
blender.exe,以及3.5\python\DLLs目录下的核心运行库,确保打包后的exe能调用到Blender的运行环境。
3. 修正旧版Blender路径残留
- 检查系统环境变量,删除或替换指向Blender 3.4的变量(如
BLENDER_SYSTEM_SCRIPTS),改为Blender 3.5的对应路径。 - 在脚本开头添加路径修正代码,强制指定Blender 3.5的模块路径:
import sys import os # 替换为你的Blender 3.5 Python site-packages路径 blender_python_lib = r"C:\Program Files\Blender Foundation\Blender 3.5\3.5\python\Lib\site-packages" if blender_python_lib not in sys.path: sys.path.insert(0, blender_python_lib)
4. 优先选择单目录打包模式
单文件模式会将所有文件压缩到临时目录,容易丢失bpy的二进制依赖,建议使用「单目录」模式打包,所有依赖文件与exe放在同一目录,便于调试和补充缺失文件。
5. 解决_bpy模块缺失问题
_bpy是编译后的.pyd二进制文件,位于Blender的bpy模块目录下,确保在「Additional Files」中完整添加了整个bpy目录,打包后_bpy.pyd需存放在exe同目录的bpy文件夹内。
内容的提问来源于stack exchange,提问作者Maximilian B
相关产品推荐
相关产品推荐

