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运行

在这里插入图片描述

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐