Pyinstaller打包QGIS独立应用
安装pyinstaller
管理员启动cmd,进入到C:\Program Files\QGIS 3.4\bin
,执行命令(非稳定版为:python-qgis.bat):
python-qgis-ltr.bat -m pip pyinstaller
测试安装
C:\Program Files\QGIS 3.4\bin>python-qgis-ltr.bat -m PyInstaller
usage: __main__.py [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
[--add-data <SRC;DEST or SRC:DEST>]
[--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
[--hidden-import MODULENAME]
[--additional-hooks-dir HOOKSPATH]
[--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
[--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
[--noupx] [--upx-exclude FILE] [-c] [-w]
[-i <FILE.ico or FILE.exe,ID or FILE.icns>]
[--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
[--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
[--win-no-prefer-redirects]
[--osx-bundle-identifier BUNDLE_IDENTIFIER]
[--runtime-tmpdir PATH] [--bootloader-ignore-signals]
[--distpath DIR] [--workpath WORKPATH] [-y]
[--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
scriptname [scriptname ...]
__main__.py: error: the following arguments are required: scriptname
示例代码
import sys
from qgis.core import QgsApplication
from qgis.gui import QgsMapCanvas
def init():
a = QgsApplication([], True)
QgsApplication.setPrefixPath('qgis', True)
QgsApplication.initQgis()
return a
def show_canvas(app):
canvas = QgsMapCanvas()
canvas.show()
app.exec_()
app = init()
show_canvas(app)
运行示例
运行成功后会出现空白窗口
"C:\Program Files\QGIS 3.4\bin\python-qgis-ltr.bat" test.py
编译打包
pyinstaller用户手册: https://pyinstaller.readthedocs.io/en/stable/usage.html
"C:\Program Files\QGIS 3.4\bin\python-qgis-ltr.bat" -m PyInstaller -w ^
--icon=logo.ico ^
--add-data="C:\Program Files\QGIS 3.4\apps\qgis-ltr\plugins;qgis\plugins" ^
--add-data="C:\Program Files\QGIS 3.4\apps\Python37\Lib\site-packages\PyQt5\*.pyd;PyQt5" ^
--add-data="C:\Program Files\QGIS 3.4\apps\qt5\plugins\styles;PyQt5\Qt\plugins\styles" ^
--add-data="C:\Program Files\QGIS 3.4\apps\qt5\plugins\iconengines;PyQt5\Qt\plugins\iconengines" ^
--add-data="C:\Program Files\QGIS 3.4\apps\qt5\plugins\imageformats;PyQt5\Qt\plugins\imageformats" ^
--add-data="C:\Program Files\QGIS 3.4\apps\qt5\plugins\platforms;PyQt5\Qt\plugins\platforms" ^
--add-data="C:\Program Files\QGIS 3.4\apps\qt5\plugins\platformthemes;PyQt5\Qt\plugins\platformthemes" ^
test.py
完成后进入dist文件夹中的test目录,目录结构如下:
注意:其中qgis文件夹就是示例代码中设置的路径:QgsApplication.setPrefixPath('qgis', True)
运行
双击test.exe运行