QGIS插件开发环境配置(详细)
QGIS插件开发包括在自带的Python Console里面写脚本和进行独立的QGIS应用程序开发。本文涉及到的插件开发为后者。
环境选型:
- QGIS 3.10.13
- IDE:vscode(QGIS插件开发的官网上有IDE的推荐,但本人用习惯了vscode,毕竟好看又轻量)
- Qt Creator
1 python环境配置
在这一块我走了一些弯路:
· 单独安装了python环境,但其实QGIS本身就自带一个python环境,只需要手动添加进环境变量中就可以了。
1.1 添加环境变量
1、环境变量的添加就是右键【我的电脑】——点击【属性】——点击【高级系统设置】——点击【环境变量】——双击【Path】然后添加
如图,我将QGIS安装在D盘,涉及到的路径是以上的4个,大家可以在自己安装QGIS的文件夹里找到对应的路径。(这里进一步说明,不需要自己重新装一个python环境!!)
2、完成【Path】的添加之后,还需要添加环境变量PYTHONPATH和PYTHONHOME
这两个环境变量装过python环境的人应该不陌生,如果之前装过的话就直接在里面添加QGIS自带的python环境相关的路径就可以。
PYTHONPATH
PYTHONHOME
※ATTENTION※
请务必将刚才添加的QGIS的python的各种路径全部上移到Path、PYTHONPATH、PYTHONHOME三个变量路径列表的最上方,以免发生多个python环境冲突的问题!!!
以上,基本的环境配置就完成了,我的QGIS的python是3.7,打开cmd,输入python,得到如下就说明环境配好了。
1.2 vscode的python环境
我是新装的vscode,因此没有python的debug环境,需要在Extentions里面搜索【python】然后下载相关插件才行。
然后,如果说你的电脑上有多个python环境,那么在vscode里需要选择QGIS对应的那个python才行。(在python:select interpreter里面选则)
然后,当你看到你输入的import qgis.core
不再是白色的时候,就说明能够找到qgis.core这个库了。
※ATTENTION※
个人按照以上操作完成后运行import qgis.core
这句话是没有出现问题的,但是在探索的阶段也出现过各种问题:
-
ImportError: DLL load failed while importing QtCore
这个问题在我把该添加的环境变量添加之后,并且给vscode选好对应的python编译器之后就没什么问题了。 -
AttributeError: module 'importlib._bootstrap' has no attribute '_w_long
这个问题我参考的链接在这里!!!🔗,概括来说就是各种python环境互相冲突了,我最后在电脑上只留下了QGIS一个python环境。
2 创建一个python插件模板
想要了解QGIS python插件开发具体涉及到的各种文件,可以去官网的cookbook看看COOKBOOK🔗,涉及到的文件比较多,放一个官网介绍的插图。
一个个的写会比较麻烦,好在有大佬写了一个Plugin Builder 3这样一个QGIS的插件,可以可视化的构建开发插件需要的各种文件!
按照相应步骤一步步的next下去就好了,特别方便。具体可以参照《初探QGIS插件开发》🔗这篇博客,很详细了!
一路点击【next】,到最后【generate】,会有一个⚠弹窗:
意思就是没找到你的pyrcc5.exe,不能给你编译插件。有些地方说这个不重要可以忽略,但是暂时的,后面还是需要用到,等下来说这个问题。
※ATTENTION※
在创建插件的第一步,填写插件名称(红框圈出的4个),千万不要用test这个名字!!不然你在添加自己的插件过程中一定会出现这个问题:
究其原因:你的插件里面有名字冲突的文件存在。
这是一个插件的文件夹目录(部分),可以看到,它本身自带一个“test”文件夹,所以如果你还把插件命名为test,就很容易出现没法import的问题。(没理解的话,就记得别命名为test就行)
3 添加你的插件到QGIS中
按照以上的流程,你已经获得了一个完整的插件,可以尝试将其放进QGIS里试一试。
1.1 将插件复制到活动配置目录
打开活动配置目录,将插件复制到目录下【python】——【plugins】文件夹里面。
重启 QGIS,点击【插件】——【管理并安装插件】——【已安装】,在你的插件前面打勾✔。
这个时候会出现一个问题:
这就是因为你还没构建你的插件。在构建之前,你的插件目录里只会有一个
qrc文件,但是在构建之后
而涉及到构建,则必须涉及到刚才说的pyrcc5.exe了。
1.2 构建你的插件
在这一块,你可以首先在cmd里面输入pyrcc5查看一下能不能找到这玩意。本人就没有找到,尝试过很多办法都没成功。打开QGIS python37的文件夹,里面只有两个bat文件。
一开始尝试往里面添加pyrcc5.exe文件,参考的博客在这里!!🔗告诉你几种添加这个exe文件的方法。本人都没成功。
解决方法:在插件目录里添加一个compile.bat文件,文件内容如下:
@echo off
call "C:\OSGeo4W64\o4w_env.bat" //你的这几个文件的路径,在QGIS的bin目录下,注意路径不能包含空格
call "C:\OSGeo4W64\qt5_env.bat"
call "C:\OSGeo4W64\py3_env.bat"
@echo on
pyrcc5 -o resources.py resources.qrc //官网的构建方案
双击运行bat文件,构建成功,resources.py出现啦!!
最后再次重启QGIS,就能将自己的插件打开了:
以上!