使用cx_Freeze将调用Ursina的Python脚本打包为exe时报错如何解决
cx_Freeze打包Ursina项目报错解决方案
核心报错原因是cx_Freeze自动打包时,未完整收录Ursina依赖的资源文件和底层panda3d模块文件,需修改打包配置补全规则。
1 调整setup.py打包配置
参考如下配置修改你的setup.py文件:
import sys from cx_Freeze import setup, Executable import ursina import os # 手动指定Ursina的assets资源目录 ursina_assets = os.path.join(os.path.dirname(ursina.__file__), 'assets') build_exe_options = { "packages": ["ursina", "panda3d"], "include_files": [(ursina_assets, "ursina/assets")], # 如果你有自定义的项目资源,按下面格式添加 # "include_files": [(ursina_assets, "ursina/assets"), ("./你的自定义资源路径", "./输出目录下的路径")] } base = None if sys.platform == "win32": base = "Win32GUI" # 如果你不需要控制台窗口就保留这个配置,需要的话注释掉 setup( name = "你的项目名", version = "1.0", description = "你的项目描述", options = {"build_exe": build_exe_options}, executables = [Executable("你的入口脚本名.py", base=base)] )
配置说明:
packages参数强制包含Ursina和panda3d全量包,避免cx_Freeze自动检测遗漏依赖模块include_files参数将Ursina内置的assets资源目录拷贝到打包输出目录,解决运行时找不到内置纹理、模型的报错
2 重新执行打包
- 先删除之前生成的
build、dist文件夹,清空旧打包缓存 - 执行打包命令:
python setup.py build
3 额外兼容处理
如果打包完成后运行提示缺少系统dll文件,可直接将对应dll复制到打包后的可执行文件同目录,或者把dll路径添加到include_files列表里一起打包。
内容的提问来源于stack exchange,提问作者Onuelito
相关产品推荐
相关产品推荐

