如何使用Panda3D与Pyinstaller将Python项目打包为可执行文件
解决Panda3D + PyInstaller打包
<auto>etc配置查找失败警告的方法 该警告的核心原因是PyInstaller打包后会将所有依赖资源放在运行时临时目录,Panda3D默认的自动配置路径失效,无法定位到内置的etc配置文件夹,不修复可能导致默认配置不生效、程序运行异常。
解决步骤如下:
- 第一步:修改业务代码,在初始化Panda3D相关逻辑前,手动指定配置路径适配打包环境
在你原有代码的main函数开头添加如下逻辑:import sys import os def main() -> None: # 新增适配逻辑开始 if getattr(sys, '_MEIPASS', False): # _MEIPASS是PyInstaller打包后运行时的临时资源根目录 panda_res_root = os.path.join(sys._MEIPASS, 'panda3d') os.environ['PANDA_PRC_DIR'] = os.path.join(panda_res_root, 'etc') os.environ['PANDA_DIR'] = panda_res_root # 新增适配逻辑结束 loadPrcFile('file.prc') Game().run() - 第二步:调整PyInstaller打包参数,显式将Panda3D的配置目录和你自己的
file.prc打包进产物
如果你使用命令行直接打包,将命令替换为如下格式(Windows环境):
如果是Linux/macOS环境,将命令中的路径分隔符pyinstaller --onefile --windowed --add-data "你的Python环境路径/Lib/site-packages/panda3d/etc;panda3d/etc" --add-data "file.prc;." 你的脚本名.py;替换为:即可。
如果你使用spec文件配置打包规则,在datas配置项中添加两项即可:datas = [ ('你的Python环境路径/Lib/site-packages/panda3d/etc', 'panda3d/etc'), ('file.prc', '.'), ]注:如果不知道Python环境的site-packages路径,可以在当前环境运行
python -c "import site; print(site.getsitepackages())"获取对应路径。 - 第三步:重新执行打包命令,生成的可执行文件运行时不会再触发该警告,可正常启动。
内容的提问来源于stack exchange,提问作者Br0k3nS0u1
相关产品推荐
相关产品推荐

