Problema com a importação qgis.core ao gravar um script PyQGIS independente

18

Eu estou tentando escrever um script python autônomo no Windows 7 que usa qgis.core e várias outras bibliotecas qgis.

Eu encontrei uma pergunta antiga sobre esse assunto aqui: Gravando scripts Python autônomos usando PyQGIS? e seguia seu conselho, usando o guia aqui: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

O código sugerido é:

set PYTHONPATH=c:\qgispath\python

Seguido por:

set PATH=C:\qgispath;%PATH%

Descobri que o IDLE não gostou do conjunto "no início, então meu código fica assim:

PYTHONPATH="C:\OSGeo4W64\apps\qgis\python"
PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
import qgis.core

e eu recebo:

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core

Eu tentei todas as variantes dos caminhos que consigo incluir, removendo o;% PATH% "no final (que parece um pouco supérfluo), mas não consegui encontrar mais informações. Alguém tem alguma idéia de onde eu possa estar? dando errado?

EDITAR:

Depois de ver o comentário de Luigi Pirelli, tentei agora:

>>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:/OSGEO4~1/apps/qgis/./python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> 
user24956
fonte
Você pode modificar o título da sua pergunta da maneira que descreveria exatamente o problema que está enfrentando?
SS_Rebelious
defina PYTHONPATH como o valor que você pode ler digitando "qgis" no QGIS Python Console ... qual é o valor? No meu caso: <módulo 'qgis' de 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc'> => preciso adicionar ao PYTHONPATH o caminho: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Título alterado, obrigado, vou tentar isso e reportar de volta no corpo principal da pergunta
user24956
1
Ainda sem sorte, tentei muitas permutações de PATH e PYTHONPATH sem sucesso.
precisa saber é o seguinte

Respostas:

12

Se você instalou o QGIS via OSGeo4W, sugiro que você siga este fluxo de trabalho (que acabei de testar no Windows 7):

  1. Abra o OSGeo4W Shell . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Defina variáveis ​​de ambiente . Minha maneira preferida é executar esse arquivo bat (atualizado em 2016.11.03: este arquivo bat ) a partir do OSGeo4W Shell. Como você pode ver, o arquivo define variáveis ​​de ambiente desta maneira:

    set PYTHONPATH=%OSGEO4W_ROOT%\\apps\\qgis\\python
    set PATH=%OSGEO4W_ROOT%\\apps\\qgis\\bin;%PATH%

    Obviamente, você precisa verificar se esses caminhos existem no seu sistema operacional e ajustá-los, se necessário.

    Portanto, faça o download do arquivo .bat e execute-o acessando-o no OSGeo4W Shell e pressionando ENTER.

    insira a descrição da imagem aqui

  3. Importe as bibliotecas PyQGIS por um dos seguintes métodos:

    uma. Digite o intérprete Python. Execute pythonno OSGeo4W Shell e importe as bibliotecas manualmente.

    insira a descrição da imagem aqui

    b. Execute um script Python. Execute python my_pyqgis_script.pyno OSGeo4W Shell. Eu começaria com uma muito simples .

    insira a descrição da imagem aqui

O fluxo de trabalho foi publicado (em espanhol) há vários anos no GeoTux e ainda funciona. Como você pode ver, não incluo variáveis ​​de ambiente no script Python, mas as defino no OSGeo4W Shell.

Germán Carrillo
fonte
Oi! Eu tenho uma dúvida sobre isso. Por que var_entorno_osgeo4w.bat? Eu fiz todas essas linhas, mas nesta parte me dá um erro. Também li nestes foruns de ajuda e ainda recebo o erro de importação qgis.core (executado no shell osgeo4w).
Bárbara Duarte
Porque esse é o nome do arquivo que estou fornecendo para definir variáveis ​​de ambiente. Então, você vai para a pasta em que esse arquivo .bat está localizado (nas imagens em que ele está localizado C:\dllo) e executa o arquivo .bat escrevendo o nome do arquivo e pressionando Enter.
Germán Carrillo
Tentei usar a solução acima - tentei executar o my_pygis_script.py e obtive um erro de importação: Nenhum módulo chamado qgis.core. Como posso consertar isso?
kflaw
Eu também tentei qgis.core importação em PyScripter, e eu recebo outro erro importação: no módulo chamado gole
kflaw
1
Recebo 'Nenhum módulo chamado qgis.core' se tentar o método sugerido aqui. Se eu usar o python.exe no qgis / bin como intérprete, recebo o erro 'no module named site' quando tento importar o qgis.core. Eu perdi muitas horas tentando usar pyqgis.
Alexander Alexander
6

Acabei de lutar com um problema semelhante e notei um arquivo em lotes na pasta OSGeo4W \ bin chamado python-qgis.bat . Isso faz parte de uma instalação baseada em pacote OSGeo4W do QGIS 2.18.15 x64 no Windows 10.

Quando executado, esse arquivo em lotes abre o interpretador Python. import qgisexecutado com sucesso a partir de dentro.

Este arquivo em lotes contém a linha (conforme observado por Germán Carrillo em sua resposta original):

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

pouco antes do lançamento do interpretador python.

Andy Harfoot
fonte
isso tira a dor de configurar manualmente as variáveis de ambiente, graças
Hicham Zouarhi
Isso parece começar a funcionar, mas gera um erro "SyntaxError: sintaxe inválida" ao executar C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
A razão pela qual recebi esse erro é porque não estava executando o python que o QGIS está usando. Funciona agora!
Donny V.