Problem mit dem Import von qgis.core beim Schreiben eines eigenständigen PyQGIS-Skripts

18

Ich versuche, ein eigenständiges Python-Skript in Windows 7 zu schreiben, das qgis.core und verschiedene andere qgis-Bibliotheken verwendet.

Ich habe hier eine alte Frage zu diesem Thema gefunden: Eigenständige Python-Skripte mit PyQGIS schreiben? und folgte seinem Rat, indem er das Handbuch hier verwendete: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

Der dort vorgeschlagene Code lautet:

set PYTHONPATH=c:\qgispath\python

gefolgt von:

set PATH=C:\qgispath;%PATH%

Ich fand, dass IDLE das "set am Anfang nicht mochte, so sieht mein Code so aus:

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

und ich bekomme:

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

Ich habe jede Variante der Pfade ausprobiert, die ich mir vorstellen kann, einschließlich des Entfernens von ";% PATH%" am Ende (das sieht ein bisschen überflüssig aus), konnte aber keine weiteren Informationen finden. Hat jemand eine Idee, wo ich sein könnte? falsch machen?

BEARBEITEN:

Nachdem ich Luigi Pirellis Kommentar gesehen habe, habe ich es jetzt versucht:

>>> 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
quelle
Können Sie bitte den Titel Ihrer Frage so ändern, dass er das genaue Problem beschreibt, mit dem Sie konfrontiert sind?
SS_Rebelious
Stellen Sie PYTHONPATH als den Wert ein, den Sie lesen können, indem Sie "qgis" in die QGIS-Python-Konsole eingeben ... was ist der Wert? In meinem Fall: <Modul 'qgis' aus 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc'> => Ich muss PYTHONPATH den Pfad hinzufügen: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Titel geändert, danke, ich werde dies versuchen und im Hauptteil der Frage berichten
user24956
1
Immer noch kein Glück, ich habe viele Permutationen von PATH und PYTHONPATH ohne Erfolg versucht.
user24956

Antworten:

12

Wenn Sie QGIS über OSGeo4W installiert haben, empfehlen wir Ihnen, diesen Arbeitsablauf zu befolgen (ich habe ihn gerade unter Windows 7 getestet):

  1. Öffnen Sie die OSGeo4W-Shell . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Setze Umgebungsvariablen . Mein bevorzugter Weg ist es, diese Bat-Datei (aktualisiert am 2016.11.03: diese Bat-Datei ) von der OSGeo4W-Shell auszuführen. Wie Sie sehen, legt die Datei Umgebungsvariablen folgendermaßen fest:

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

    Natürlich müssen Sie selbst überprüfen, ob diese Pfade in Ihrem Betriebssystem vorhanden sind, und sie gegebenenfalls anpassen.

    Laden Sie die .bat-Datei herunter und führen Sie sie aus, indem Sie in der OSGeo4W-Shell darauf zugreifen und die EINGABETASTE drücken.

    Bildbeschreibung hier eingeben

  3. Importieren Sie PyQGIS-Bibliotheken mit einer der folgenden Methoden:

    ein. Geben Sie den Python-Interpreter ein. Führen Sie pythondie OSGeo4W-Shell aus und importieren Sie die Bibliotheken manuell.

    Bildbeschreibung hier eingeben

    b. Führen Sie ein Python-Skript aus. Führen Sie python my_pyqgis_script.pydie OSGeo4W-Shell aus. Ich würde mit einem sehr einfachen beginnen .

    Bildbeschreibung hier eingeben

Der Workflow wurde vor einigen Jahren in GeoTux (auf Spanisch) veröffentlicht und funktioniert immer noch. Wie Sie sehen, füge ich keine Umgebungsvariablen in das Python-Skript ein, sondern setze sie in der OSGeo4W-Shell.

Germán Carrillo
quelle
Hallo! Daran habe ich Zweifel. Warum var_entorno_osgeo4w.bat? Ich habe all diese Zeilen gemacht, aber in dieser Teil gibt mir einen Fehler. Außerdem habe ich in diesen Hilfeforen nachgelesen und erhalte immer noch den Fehler "import qgis.core" (in der osgeo4w-Shell ausgeführt).
Bárbara Duarte
Denn das ist der Name der Datei, die ich Ihnen zur Verfügung stelle, um Umgebungsvariablen festzulegen. Wechseln Sie in den Ordner, in dem sich die BAT-Datei befindet (in den Bildern, in denen sie sich befindet C:\dllo), und führen Sie die BAT-Datei aus, indem Sie den Namen der Datei eingeben und die Eingabetaste drücken.
Germán Carrillo
Ich habe versucht, die oben genannte Lösung zu verwenden. Ich habe versucht, my_pygis_script.py auszuführen und einen Importfehler zu erhalten: Kein Modul mit dem Namen qgis.core. Wie kann ich das beheben?
kflaw
Ich habe auch versucht, qgis.core in pyscripter zu importieren, und ich erhalte einen weiteren Importfehler: kein Modul namens sip
kflaw
1
Ich erhalte 'Kein Modul namens qgis.core', wenn ich die hier vorgeschlagene Methode ausprobiere. Wenn ich die Datei python.exe in qgis / bin als Interpreter verwende, wird beim Import von qgis.core der Fehler "no module named site" angezeigt. Ich habe viele Stunden damit verbracht, Pyqgis zu benutzen.
Alexander
6

Ich habe gerade mit einem ähnlichen Problem gerungen und eine Batch-Datei im Ordner OSGeo4W \ bin mit dem Namen python-qgis.bat festgestellt . Dies ist Teil einer paketbasierten OSGeo4W-Installation von QGIS 2.18.15 x64 unter Windows 10.

Wenn diese Batch-Datei ausgeführt wird, wird der Python-Interpreter geöffnet. import qgisläuft erfolgreich von innen.

Diese Batch-Datei enthält die Zeile (wie von Germán Carrillo in seiner ursprünglichen Antwort vermerkt):

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

kurz bevor der Python-Interpreter gestartet wird.

Andy Harfoot
quelle
Dies zieht den Schmerz der manuell die Umgebungsvariablen konfigurieren, dank
Hicham Zouarhi
Dies scheint zu funktionieren, löst aber einen Fehler "SyntaxError: ungültige Syntax" aus, wenn C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
Der Grund für diesen Fehler ist, dass ich die von QGIS verwendete Python nicht ausgeführt habe. Funktioniert jetzt!
Donny V.