在之前一篇文章介绍了用Qgis2.14搭建python独立开发环境,至那次之后使用一直没什么问题,但是后来才发现一个比较坑的事情,就是原来安装的Qgis3.01不能用了,看来不能同时用两个版本,之前在3版本下写的python脚本在2.14下面运行出错,于是还是考虑用Qgis3.01来搭建python独立环境,上次没时间试试,昨天试了一下,大体上没什么问题,但是还是有个坑,但不管先记录下来,后续再说。
首先qgis3.01跟2.14配置方法大体相同,但是有些细节要注意,下面具体说:
第一步:配置QGIS自带的python.exe的路径到path中,这样当我们通过cmd进入命令行窗口执行python命令时,系统知道我们使用的是哪一个编译器
第二步:这时启动python,会提示ImportError: No module named site,这是因为,QGIS自带的python.exe在bin目录也就是我们上面配置的路径下,但是python运行所需要的其他文件却都在QGIS\apps\Python27目录下,所以出现错误,解决办法是:添加环境变量PYTHONHOME和PYTHONPATH来帮助其找到这些文件,PYTHONHOME:C:\OSGeo4W64\apps\Python36,PYTHONPATH:C:\OSGeo4W64\apps\Python36\lib,这里与之前2.14不同,可以看到apps文件夹下有两个python版本,python27和python36,这边还是选择新版本。注意:这里要根据自己的安装路径适当地变化。
第三步:这时候启动python,发现可以正常执行python命令了,当我们执行from PyQt4.QtCore import *(注意此处是from PyQt5.QtCore import *)命令导入qt模块时成功执行,但是当我们执行from qgis.core import *命令导入qgis模块时,提示:ImportError: No module named qgis.core,解决办法是:把qgis的库文件添加到环境变量PYTHONPATH下。此步骤还有一个问题,就是C:\OSGeo4W64\bin文件夹下有两个python解释器,一个python一个python36,python应该是默认python27版本的,我直接将python删除,将python36修改为python,其实应该也可以在配置路径中配置python36。
第四步、将Qgis的库文件路径加入path
至此配置完成,但是在测试时候发现一个很坑的事情,直接在交互行中输入from PyQt5.QtCore import *时候报错找不到指定模块,但是先执行from qgis.core import *在执行from PyQt5.QtCore import *时居然就不报错了,目前没有深究什么原因,目测是有依赖关系,等有空再弄一下。