Configurando PyCharm para funcionar com bibliotecas QGIS

Aug 15 2020

Tenho acompanhado vários posts e tutoriais, incluindo os posts de Anita Graser, Anita Graser ehttps://gis.stackexchange.com/questions/302774/ enquanto tento configurar minha instalação PyCharm para acessar e trabalhar com as bibliotecas QGIS em minha instalação OSGeo4W64 QGIS 3.14

Eu criei os arquivos pygis.cmd e pycharm.cmd que são necessários e eles parecem fazer o que deveriam. Meu pycharm.cmd inicia o PyCharm com sucesso

> @echo off
SET OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\bin\qt5_env.bat
call "%OSGEO4W_ROOT%"\bin\py3_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass78\etc\env.bat
@echo off
rem path %PATH%;%OSGEO4W_ROOT%\apps\qgis
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass78\lib
path %PATH%;C:\OSGeo4W64\apps\Qt5\bin
rem path %PATH%;C:\OSGeo4W64\apps\qgis\python\plugins
path %PATH%;C:\OSGeo4W64\apps\Python37\Scripts
rem path %PATH%;C:\OSGeo4W\apps\Python37

set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37

set PATH=C:\Program Files\Git\bin;%PATH%
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\Qt5\plugins

start "PyCharm aware of QGIS" /B "C:\Users\b8060507\AppData\Local\JetBrains\PyCharm Community Edition 2019.3.3\bin\pycharm64.exe" 

No entanto, apesar de seguir https://gis.stackexchange.com/questions/302774/ Eu continuo recebendo esta mensagem de erro aparecendo

Tenho certeza de que defini meu Qt Plugin Path.corretamente, que a postagem 302774 recomenda incluir:

set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins  

no arquivo pycharm.cmd

Alguém pode oferecer algum conselho sobre onde posso estar errado? Espero que 'Ben W', entre outros, possa ver esta questão, pois seu conselho ajudou outros na postagem 302774, mas não está funcionando para mim em 2020. Então, talvez haja outras anomalias na configuração agora exigidas para versões posteriores do QGIS?

Respostas

1 BenW Aug 16 2020 at 16:49

O caminho do seu plugin Qt parece OK. Abaixo está o arquivo em lote que estou usando no momento. Eu testei isso com um QGIS 3.14.15 recém-instalado (instalação OSGeo4W) e não estou recebendo nenhum erro. Você pode experimentar e ver se funciona para você.

* Observação: eu uso o PyScripter em vez do PyCharm há algum tempo, mas realmente não deve fazer nenhuma diferença. Basta alterar a última linha para iniciar o PyCharm.

@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\bin\qt5_env.bat
call "%OSGEO4W_ROOT%"\bin\py3_env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;C:\OSGeo4W64\apps\Qt5\bin
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
set GDAL_FILENAME_IS_UTF8=YES
rem Set VSI cache to be used as buffer, see #6448
set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins

start "PyScripter aware of QGIS" /B "C:\Program Files\PyScripter\PyScripter.exe"

Iniciando o PyScripter com este arquivo em lote, posso executar o seguinte sem erros.

Para testar as bibliotecas QGIS:

from qgis.core import *
QgsApplication.setPrefixPath("C:/OSGeo4W/apps/qgis", True)
qgs = QgsApplication([], False)
qgs.initQgis()
qgs.exitQgis()

E para testar o PyQt:

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys

class MyDialog(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setGeometry(250, 250, 500, 350)

def main():
    app = QApplication(sys.argv)
    w = MyDialog()
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()