PyInstaller打包PictureFrame2020.py生成可执行文件启动报错求助
解决PyInstaller打包pi3d程序时丢失Shader文件的问题
问题原因
pi3d库依赖的Shader头文件(如std_head_vs.inc)属于非Python资源文件,PyInstaller默认不会自动识别并打包这类文件,导致程序运行时临时目录中缺少必要文件,触发FileNotFoundError。
解决方案
1. 定位pi3d的shaders目录
在你的Python环境中找到pi3d的安装路径,其中shaders子目录包含所有需要的.inc和.glsl文件:
- Linux/macOS:通常路径类似
/usr/lib/pythonX.X/site-packages/pi3d/shaders(X.X为Python版本) - Windows:通常路径类似
C:\PythonXX\Lib\site-packages\pi3d\shaders
2. 配置PyInstaller打包规则
方法一:命令行直接添加参数
使用--add-data参数指定要打包的资源目录(Linux/macOS用:分隔路径,Windows用;):
pyinstaller --add-data "/实际路径/pi3d/shaders:pi3d/shaders" PictureFrame2020.py
方法二:修改spec文件
- 先生成spec文件:
pyinstaller --name PictureFrame2020 PictureFrame2020.py
- 打开生成的
PictureFrame2020.spec,修改datas字段:
datas = [('/实际路径/pi3d/shaders', 'pi3d/shaders')]
- 用spec文件重新打包:
pyinstaller PictureFrame2020.spec
3. 处理libGLX警告(Linux环境)
如果运行时出现libGLX needs to be available警告,安装系统依赖包即可消除:
sudo apt install libgl1-mesa-glx
内容的提问来源于stack exchange,提问作者imre
相关产品推荐
相关产品推荐

