使用PyInstaller打包QGIS 3.10 Python应用程序遇错误求助
解决QGIS 3.10 Python程序PyInstaller打包后exe运行错误的方案
1. 校准打包环境变量
打包前必须将QGIS核心依赖路径注入环境变量,确保PyInstaller能定位到QGIS的库文件:
set PATH=C:\Program Files\QGIS 3.10\apps\qgis-ltr\bin;%PATH% set PYTHONPATH=C:\Program Files\QGIS 3.10\apps\qgis-ltr\python;%PYTHONPATH% set QGIS_PREFIX_PATH=C:\Program Files\QGIS 3.10\apps\qgis-ltr
路径需根据你的QGIS实际安装目录调整。
2. 修改PyInstaller Spec文件
- 先生成基础spec文件:
pyi-makespec Main.py - 编辑spec文件,补充QGIS必需的隐藏导入和资源文件:
hiddenimports=[ 'qgis.core', 'qgis.gui', 'qgis.utils', 'PyQt5.QtCore', 'PyQt5.QtGui', 'PyQt5.QtWidgets', 'osgeo.gdal', 'osgeo.ogr' ] datas=[ (r'C:\Program Files\QGIS 3.10\apps\qgis-ltr\resources', 'resources'), (r'C:\Program Files\QGIS 3.10\apps\qgis-ltr\plugins', 'plugins') ] - 用修改后的spec文件重新打包:
pyinstaller Main.spec
3. 修复GDAL依赖缺失
- 复制QGIS的GDAL配置目录到exe所在文件夹:将
C:\Program Files\QGIS 3.10\apps\gdal\share\gdal完整复制到dist\Main\gdal-data - 在程序入口处添加GDAL环境变量配置:
import os os.environ['GDAL_DATA'] = os.path.join(os.path.dirname(__file__), 'gdal-data')
4. 定位具体错误信息
打开命令提示符,进入dist\Main目录,直接运行Main.exe,查看控制台输出的错误详情:
- 若提示缺失DLL:从QGIS的
bin目录找到对应文件,复制到exe同目录 - 若提示模块导入失败:将缺失模块添加到spec文件的
hiddenimports列表
5. 确保版本兼容性
保持QGIS默认Python3.7环境的依赖版本不变,避免自行升级PyQt、GDAL等库,PyInstaller 4.5.1与Python3.7的兼容性可满足QGIS 3.10打包需求。
内容的提问来源于stack exchange,提问作者Hasan Topçu
相关产品推荐
相关产品推荐

