一个星期前决定要学QGIS的时候,看了很多在python环境下的配置教程,各种配置path、PYTHONPATH,各种出问题。因为还要用qt designer,要把.ui转换成.py,但QGIS自带的python里只有pyqt5,没有pyqt5-sip和pyqt5-tools,要用qt designer就必须有pyqt5,要用pyqt5就必须装pyqt5-sip,装了pyqt5-sip,QGIS就报错。翻来覆去不是QGIS的python插件出问题就是运行.py的时候找不到qtpy5.core或者什么问题。快崩溃了,系统都重装几次。
后来经人指点,说QGIS根本不用设置什么系统path,也不用安装python,只用自带的python,在pycharm或者vscode等的python路径里设成QGIS\bin\python-qgis.bat,不要用python.exe,但这还不能解决pyqt5-sip和QGIS的冲突。
今天晚上忽然想到,可以另外安装一个python,跟QGIS自带的版本保持一致,然后可以正常安装pyqt5-sip、pyqt5、pyqt5-tools。如果需要QGIS,则用自带的python(python-qgis.bat),如果要把.ui转换成.py则用另外安装的python即可。总算解决了问题。 我用的是vscode,如图选择解释器(Python:realPython是新装的python,Python:QGIS是QGIS自带的python):
关键就是pythonpath,根据需要切换。launch.json相关部分如下:
{ "name": "Python: realPython", "type": "python", "request": "launch", "pythonPath": "C:\\Python37\\python.exe", "program": "${file}", "console": "integratedTerminal" }, { "name": "Python: QGIS", "type": "python", "request": "launch", "pythonPath": "C:\\Program Files\\QGIS 3.6\\bin\\python-qgis.bat", "program": "${file}", "console": "integratedTerminal" },还有就是在setting.json里面,需要手动切换qt designer(不用哪个就用“\”把哪个注释掉。QGIS3.6.3版自带了qt designer,即代码中的qgis-designer.bat,另装的python的是designer.exe:
{ "pyqt-integration.pyuic.compile.addOptions": "-x", //"pyqt-integration.qtdesigner.path": "C:\\Python37\\Lib\\site-packages\\pyqt5_tools\\designer.exe", "pyqt-integration.qtdesigner.path": "C:\\Program Files\\QGIS 3.6\\bin\\qgis-designer.bat", }目前只有这办法了,希望以后还能发现更好的解决方法。