He pasado bastante tiempo buscando una respuesta clara a este tema y aún no he podido lograr mi objetivo de acceder a PyQGIS en un script independiente.
Se han proporcionado partes de respuestas en muchas preguntas diferentes, tales como:
Aplicaciones independientes que usan QGIS y variables de entorno
pyQgis en secuencia de comandos independiente, error de carga del vector
¿Escribir scripts de Python independientes usando PyQGIS?
La respuesta más exhaustiva que he encontrado fue proporcionada por @gene aquí .
Lo que me interesa particularmente es poder escribir scripts que puedan llamar tanto a Arcpy como a PyQGIS. He establecido las variables del sistema PATH y PYTHONPATH de acuerdo con la documentación del libro de cocina PyQGIS como:
C:\OSGeo4W\apps\qgis\bin,%PATH%;C:\Python27\ArcGIS10.2\Lib\site-packages\PyQt4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\
y
C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages
Respectivamente.
Estoy empezando con este script:
from qgis.core import *
QgsApplication.setPrefixPath("C:\OSGeo4W\bin\qgis.bat", True)
QgsApplication.initQgis()
# or your solution
# read a shapefile
layer = QgsVectorLayer('H:\DATA\Airfields_AB.shp', 'Airfields', 'ogr')
layer.isValid()
True
# loop through layer
for elem in layer.getFeatures():
geom= elem.geometry()
attr =elem.attributes()
(processing)
Estoy buscando evitar los scripts por lotes que establecen la configuración adecuada, sino que los llamo desde dentro del script de Python. El escenario óptimo para mí sería usar IDLE en la carpeta ArcGIS 10.2 para ejecutar el código anterior. Estoy usando una máquina con Windows 7 con ArcGIS 10.2 y QGIS 2.01.
Actualmente los resultados de este código son:
Traceback (most recent call last):
File "F:\Users\...\PyQGIS_Test_01.py", line 1, in <module>
from qgis.core import *
ImportError: DLL load failed: The specified module could not be found.
fuente