Ich möchte in einem unabhängigen Script auf Module zugreifen, die im Rahmen der Quantum GIS Software bereits installiert sind. Ich benutze Python 2.7 mit Spyder 2.2.7 und Quantum GIS Dufour 2.0.1 unter Windows Vista SP2. Das Script soll nicht mit der in Qgis integrierten Console laufen, sondern in der unabhängigen Python27 Console. Im Speziellen geht es um die Module qgis.core und qgis.utils. Um diese Module zu importieren habe ich bereits folgende Schritte durchgeführt:
Anpassen der Umgebungsvariablen:
Ich habe die PATH-Systemvariable um den Pfad zu meiner Qgis Installation erweitert
C:\Program Files\QGIS Dufour\apps\qgis\bin
und eine neue Benutzervariable PYTHONPATH erstellt die zusätzlich zur Qgis Installation weist.
C:\Program Files\QGIS Dufour\apps\Python27
C:\Program Files\QGIS Dufour\apps
C:\Program Files\QGIS Dufour\apps\qgis
Anpassen des Python-Pfads:
Ich habe in der Qgis Python Console mit sys.path die benötigten Pfade abgefragt und sie in meinem Stand-alone script mit path.append hinzugefügt, beispielsweise folgenden Pfad:
Code: Alles auswählen
import sys
sys.path.append('C:\\Program Files\\QGIS Dufour\\apps\\qgis\\.\\python\\plugins\\processing')
Wenn ich nun qgis.core importieren möchte erscheint folgende Meldung:
Code: Alles auswählen
>>> import qgis.core
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: the sip module implements API v10.0 to v10.1 but the qgis.core module requires API v8.1
Der Import hat aber wahrscheinlich trotzdem nicht korrekt funktioniert wie der nächste Schritt zeigt:
Beim Import des Moduls qgis.utils erscheint folgende Meldung:
Code: Alles auswählen
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\QGIS Dufour\apps\qgis\.\python\qgis\utils.py", line 32, in <module>
from qgis.core import QGis, QgsExpression, QgsMessageLog
ImportError: cannot import name QGis
Beim importieren der Module mit der in Qgis integrierten Python Console hat alles einwandfrei funktioniert. In Qgis gibt es also keine Kompatibilitätsprobleme der APIs. Somit würde ich vermuten, dass Python27 nicht auf die Qgis-APIs zugreift, sondern auf seine eigenen, die nicht kompatibel sind. Ein Anhängen des Pfads zu den Qgis-APIs mit der oben beschriebenen Methode hat keinen Erfolg gezeigt.
Wie kann ich bewirken, dass Python27 auf die kompatiblen APIs zugreift, oder sollte ich die existierenden APIs upgraden? Liegt es überhaupt an den APIs oder kann ich noch auf andere mögliche Fehlerquellen testen? Vielleicht habt ihr auch Ideen um die Module auf einem anderen Weg zu importieren?
Vielen Dank schonmal