Problema con la importación qgis.core al escribir un script PyQGIS independiente

18

Estoy tratando de escribir un script python independiente en Windows 7 que use qgis.core y varias otras bibliotecas qgis.

He encontrado una vieja pregunta sobre este tema aquí: ¿ Escribir scripts de Python independientes usando PyQGIS? y estaba siguiendo su consejo, usando la guía aquí: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

El código sugerido es:

set PYTHONPATH=c:\qgispath\python

seguido por:

set PATH=C:\qgispath;%PATH%

Descubrí que a IDLE no le gustaba el "conjunto al principio, por lo que mi código se ve así:

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

y obtengo:

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

He intentado todas las variantes de las rutas que se me ocurren, incluida la eliminación de "% PATH%" al final (que parece un poco superfluo), pero no he podido encontrar más información. ¿Alguien tiene alguna idea de dónde podría estar? ¿yendo mal?

EDITAR:

Después de ver el comentario de Luigi Pirelli, he intentado:

>>> 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
fuente
¿Puede modificar el título de su pregunta de la forma en que describiría el problema exacto que enfrenta?
SS_Rebelious
configure PYTHONPATH como el valor que puede leer escribiendo "qgis" en la consola QGIS Python ... ¿cuál es el valor? En mi caso: <módulo 'qgis' de 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc '> => Tengo que agregar a PYTHONPATH la ruta: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Título modificado, gracias, lo intentaré e informaré en el cuerpo principal de la pregunta
usuario24956
1
Aún sin suerte, he intentado muchas permutaciones de PATH y PYTHONPATH en vano.
user24956

Respuestas:

12

Si ha instalado QGIS a través de OSGeo4W, le sugiero que siga este flujo de trabajo (lo acabo de probar en Windows 7):

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

  2. Establecer variables de entorno . Mi forma preferida es ejecutar este archivo bat (actualizado 2016.11.03: este archivo bat ) desde el Shell OSGeo4W. Como puede ver, el archivo establece variables de entorno de esta manera:

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

    Por supuesto, debe verificar por sí mismo que esas rutas existen en su sistema operativo y ajustarlas si es necesario.

    Entonces, descargue el archivo .bat y ejecútelo accediendo desde el Shell OSGeo4W y presionando ENTER.

    ingrese la descripción de la imagen aquí

  3. Importe bibliotecas PyQGIS por uno de los siguientes métodos:

    a. Ingrese el intérprete de Python. Ejecute pythonen OSGeo4W Shell e importe las bibliotecas manualmente.

    ingrese la descripción de la imagen aquí

    si. Ejecuta un script de Python. Ejecutar python my_pyqgis_script.pyen el Shell OSGeo4W. Comenzaría con una muy simple .

    ingrese la descripción de la imagen aquí

El flujo de trabajo se publicó hace varios años en GeoTux y aún funciona. Como puede ver, no incluyo variables de entorno en el script de Python, sino que las configuro en OSGeo4W Shell.

Germán Carrillo
fuente
¡Hola! Tengo una duda sobre eso. ¿Por qué var_entorno_osgeo4w.bat? Hice todas estas líneas pero en esta parte me da un error. También leí en estos foros de ayuda y todavía recibo el error import qgis.core (ejecutado en el shell osgeo4w).
Bárbara Duarte
Porque ese es el nombre del archivo que le estoy proporcionando para establecer variables de entorno. Entonces, va a la carpeta donde se encuentra ese archivo .bat (en las imágenes en las que ve que se encuentra C:\dllo) y ejecuta el archivo .bat escribiendo el nombre del archivo y presionando Enter.
Germán Carrillo
Intenté usar la solución anterior: intenté ejecutar my_pygis_script.py y obtuve un error de importación: ningún módulo llamado qgis.core. ¿Cómo puedo arreglar esto?
kflaw
También intenté importar qgis.core en pyscripter, y recibí otro error de importación: ningún módulo llamado sip
kflaw
1
Obtengo 'Ningún módulo llamado qgis.core' si intento el método sugerido aquí. Si uso el python.exe dentro de qgis / bin como intérprete, aparece el error 'sin módulo llamado sitio' cuando intento importar qgis.core. He perdido muchas horas tratando de usar pyqgis.
Alexander
6

Acabo de luchar con un problema similar y noté un archivo por lotes en la carpeta OSGeo4W \ bin llamado python-qgis.bat . Esto es parte de una instalación basada en el paquete OSGeo4W de QGIS 2.18.15 x64 en Windows 10.

Cuando se ejecuta, este archivo por lotes abre el intérprete de Python. import qgisse ejecuta con éxito desde dentro.

Este archivo por lotes contiene la línea (como señaló Germán Carrillo en su respuesta original):

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

justo antes de que se inicie el intérprete de Python.

Andy Harfoot
fuente
esto quita el dolor de configurar manualmente las variables de entorno, gracias
Hicham Zouarhi
Esto parece comenzar a funcionar pero arroja un error "SyntaxError: sintaxis no válida" cuando se ejecuta C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
La razón por la que obtuve ese error es porque no estaba ejecutando el python que usa QGIS. Funciona ahora!
Donny V.