QGIS3.6配置python插件开发环境及调试环境
这几天准备用qgis开发个py的插件,看了一圈发现最新版本都到3.6.3了,网上2.*的教程比较多,一边参考一边看官网硬着头皮搞了一遍,环境如下:
win7 x64
qgis 3.6.3
py 3.7.1(qgis自带)
eclipse 最新版(4.11.0)至于为毛用最新版,后面再说
pycharm 2017.3
java1.8
就不放下载链接了,都是官网下载就对了~~~
1、准备工作
1.1 qgis、ide等的安装
也就是前面说的软件都按相应版本下载、安装完毕,基本都是直接next就行了,然后pycharm里配置好python,这个网上很多自行设置。
1.2 eclipse的pydev安装、配置
这里为什么要安装最新版呢,是因为在线只提供pydev7.2的版本,也就是最新版本,所以按照官网对应的eclipse版本就只能下最新的了。。。
当然如果你不想下载,用已有的eclipse也行,按照官网上的说明自行下载离线的pydev版本即可
下载地址:https://sourceforge.net/p/pydev/activity/?page=0&limit=100#5b8ac197f0d3477874cef930
PS:如果是pydev离线安装,后面配置调试路径的时候是找不到在线安装的路径的:“C:\Users<你的计算机名>.p2\pool\plugins\org.python.pydev_5.8.0.201706061859\pysrc”
需要去如图所示的位置找:
安装完之后需要在eclipse里配置
2、配置
2.1 环境变量配置
先设置系统变量path,要把qgis下的py37目录也放进去(切记要放到最前面,防止被其他地方安装的python覆盖),如:
C:\Program Files\QGIS 3.6\apps\Python37\;C:\Program Files\QGIS 3.6\bin;C:\Program Files\QGIS 3.6\apps\qgis\bin;
其他变量:
PYTHONPATH:
C:\Program Files\QGIS 3.6\bin;
C:\Program Files\QGIS 3.6\apps\Python37\lib;
C:\Program Files\QGIS 3.6\apps\qgis\bin;
C:\Program Files\QGIS 3.6\apps\qgis\python;
C:\Program Files\QGIS 3.6\apps\qgis\python\qgis;
C:\Program Files\QGIS 3.6\apps\Python37\Lib\site-packages;
C:\Program Files\QGIS 3.6\apps\Python37\DLLs;
C:\Program Files\QGIS 3.6\apps\qgis-ltr\bin;
C:\Program Files\QGIS 3.6\apps\Python37\Scripts
同样,PYTHONHOME设置如下,注意那个路径要设置到python37下,而不是qgis的bin下:
PYTHONHOME:
C:\Program Files\QGIS 3.6\apps\Python37\
因为qgis3.6/bin下的python.exe是2.7版本的,否则python命令时候会报错如下:
如下图,要保证第一个是Python37下的才行
2.2 qgis配置
先安装三个插件:
plugin builder 3 生成python插件的模板
Plugin Reloader 重载的工具,调试的时候避免重启qgis
Remote Debug 调试工具,用于链接eclipse的pydev进行调试
如图
并且将setting里的Show also experimental plugins勾选上,这样后面自己建的插件才能加载调试。
PS:qgis3.6的plugins安装位置:C:\Users\Administrator\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
这个与2.*的都不一样
如图:
然后配置pydev的路径,也就是前面eclipse里安装后的pysrc的路径(在线离线的路径区别看步骤1.2)
3、PyQt5相关安装、环境配置
3.1安装
其实qgis3.6.3安装的时候已经自带了,如果不是这个版本继续往下看。。。反正我开始没看到,愣是操作了一遍o(╥﹏╥)o
两个需要安装:
注意版本号的匹配,一般qgis3.6.3就都是最新版,我这只是举个栗子~~~
- PyQt5 qt的组件
(1)在线安装(默认最新版):
pip install PyQt5
(2)离线安装
下载whl文件
https://pypi.org/project/PyQt5/5.9.2/#files
cmd进入C:\Program Files\QGIS 3.6\apps\Python37\Scripts目录,执行命令:
pip install PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-none-win_amd64.whl
- PyQt5-tools 用于UI设计
(1)在线安装
pip install PyQt5-tools -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com
(2)离线安装
https://pypi.org/project/pyqt5-tools/5.11.3.1.4/#files
cmd进入C:\Program Files\QGIS 3.6\apps\Python37\Scripts目录,执行命令:
pip install pyqt5_tools-5.11.3.1.4-cp37-none-win_amd64.whl
安装后文件在如下目录中:C:\Program Files\QGIS 3.6\apps\Python37\Lib\site-packages\pyqt5_tools
PS1:安装PyQt5,需要先安装sip,安装方式:pip3 install sip qgis3.6默认安装了,所以可以不用装
PS2:python2, python3共存时,使用pip会出现如下错误:Unable to create process using '"c:\osgeo4~1\bin\python
可进入scripts目录下使用如下命令:
python3 -m pip install --upgrade pip
然后就可以使用pip或者pip3命令了
3.2pyqt5配置环境变量
QT_QPA_PLATFORM_PLUGIN_PATH
C:\Program Files\QGIS 3.6\apps\Python37\Lib\site-packages\PyQt5\Qt\plugins(自己安装)
C:\Program Files\QGIS 3.6\apps\Qt5\plugins(qgis3.6自带)
验证是否成功:cmd里python之后输入import PyQt5,如图:
4、pycharm的开发配置
简单粗暴,直接上图,注意参数也要配置~~~
(1)Qtdesigner
这个就是用来ui设计的了
使用方式就是在如图中就可以打开qtui的设计界面了,也可以右键*.ui文件,Extenal Tools-Qtdesigner
(2)Pyuic5
用来将*.ui文件生产py文件的,没有这个qgis是无法加载自定义的插件的。
-o ui_$FileNameWithoutAllExtensions$.py $FileName$
(3)Pyrcc5
用来将资源文件生产py的,同2差不多意思。
-o $FileNameWithoutAllExtensions$.py $FileName$
PS:要注意的是qgis自带的pyuic5.bat、pyrcc5.bat有问题,需要修改的地方如图,增加双引号,否则报错。
5、最重要的配置
搞了这么久,想着自定义一个插件试试吧,用plugin builder 3创建一个自己的,具体可以参考官网或者网上,很简单。结果创建完提示pyrcc5无效。。。。使用不了。
照着网上的旧版本教程和官网,最后在一个国外的网站上找到办法,这个是转码给gis的问题网站,类似stackoverflow,挺不错的
https://gis.stackexchange.com/questions
方法是在两个bat里增加如下代码
@echo off
call "C:\Program Files\QGIS 3.6\bin\o4w_env.bat"
call "C:\Program Files\QGIS 3.6\bin\qt5_env.bat"
call "C:\Program Files\QGIS 3.6\bin\py3_env.bat"
@echo on
如图:
看了下里面的命令,都是配置系统变量之类的,这样的话前面系统变量应该可以不用手动配置了,执行这三个文件自动配置就好了
然后可以cd到plugins目录下(C:\Users\Administrator\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\test)执行编译:
-
编译UI到py文件:
pyuic5 -o ui_Test.py Test_dialog_base.ui
-
编译资源文件:
pyrcc5 -o resources.py resources.qrc
然后打开qgis,发现自定义的plugins已经安装好了。。。
6、插件的调试
前面说了这么多,终于可以调试了
6.1 qgis里打开Remote Debug
配置如图:
6.2 eclipse进入pydev的调试模式
操作如图
然后返回到qigs里,点击Remote Debug界面的Connect按钮,链接成功就可以点击自己的plugins了,发现进入断点了。。。。
PS1:注意卸载机器上其他版本的qgis和python,否则会出一些不知名的问题