一、问题描述
基础环境:Windows10(64)+ PyCharm2024 + QGIS 3.22。
目的:解决之前python版本多,pyqt5以及QT Designer交互使用存在环境变量冲突矛盾,以及QGIS安装时自带python、pyqt5等问题。
尤其是在QT Designer设计ui界面,利用pycharm运行时,需要调用qgis.gui时无法运行。
import qgis.gui
解决思路,以QGIS 3.22为主,优先使用自带的python和pyqt5,卸载电脑中其他的版本,保持版本之间的统一性;看能否减少冲突。
二、解决方式
1、卸载所有的python和QGIS
注意要把所有的环境变量都要清空,卸载时不会自动删除;
2、安装QGIS 3.22.0
安装后没有之前文章中QT环境变量的问题,可以直接打开;
先不着急安装python,先试一下QGIS是否可用。
使用快捷键“ctrl + alt + P”打开python的控制面板,
from qgis.core import QgsRasterLayer
没有报错,可以认为安装成功;
3.安装python
首先在QGIS的python控制面板中查看使用的版本和安装位置
可以看到QGIS 3.22.0 使用的是python 3.9.5,安装在“C:\QGIS 3.22.0\bin”路径下。
在python官网上下载python 3.9.5版本安装,并选中设置path环境变量。
3、设置PyCharm中的解释器和工具
(1)设置解释器
注意要选择QGIS安装路径下的解释器,并且是.bat文件,其他如python.exe文件是无效的解释器。
(2)设置外部三个工具
QtDesigner是打开QT Designer设计界面,在安装QGIS时软件以及自带安装,不需要再自己安装,注意需要映射到qgis-designer.bat文件中。
QtDesignerProgram:C:\QGIS 3.22.0\bin\qgis-designer.bat
Argument:
Working directory:$ProjectFileDir$
更正:Pyuic也可以成功,原来的地址复制错误,要注意ui文件需要在根目录下面,或是设置为根目录。PyUIC工具是将ui文件转化为py文件,在自己独立安装的qypt5库中。
更正2:更正Working directory参数,如果设置为$ProjectFileDir$,则需将ui放在根目录下面,否则报错,如果设置为$FileDir$ ,则不会报错
PyUICProgram:C:\QGIS 3.22.0\bin\python-qgis.batArgument:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.pyWorking directory:$FileDir$
pyrcc5工具是将qrc文件转化为带_rc后缀的py文件,对应的是python-qgis.bat文件,填写相应的Program即可。
pyrcc5C:\QGIS 3.22.0\bin\python-qgis.bat-m PyQt5.pyrcc_main $FileName$ -o $FileNameWithoutExtension$_rc.py$ProjectFileDir$
三、测试案例
借用之前博客中的一个案例,忘了是哪个文章,后续找到了在引用,吐槽一下CSDN,现在动不动就文章收费,比起以前感觉太差劲了。
from qgis.core import QgsApplication
from qgis.gui import QgsLayerTreeView, QgsMapCanvas, QgsLayerTreeMapCanvasBridge# 告知QGIS路径
QgsApplication.setPrefixPath('C:/QGIS 3.22.0/apps/qgis', True)#
# # 第二个参数为是否启用GUI
qgs = QgsApplication([], False)
#
# 初始化QGIS
qgs.initQgis()# 开始写代码
print(QgsApplication.prefixPath())
print("Hello Qgis!")# 从内存中删除数据提供程序和层注册表来结束
qgs.exitQgis()
四、总结
本次折腾测试还算成功,劝告像我一样的入门者尽快尝试这个方法,可以减少折腾。