Mehr

Wie kann ich QGIS beenden, nachdem ein Python-Skript ausgeführt wurde?

Wie kann ich QGIS beenden, nachdem ein Python-Skript ausgeführt wurde?


Ich möchte ein Python-Skript ausführen überqgis --code myscript.pyund dann sofort aussteigen. Ich benutzeiface.actionExit().trigger(), das QGIS tötet, wenn ich es über die Python-Konsole ausführe, aber nicht, wenn ich das Skript einfüge, an das ich weitergebe--Code.

Was ist der richtige Weg, um sofort auszusteigen? Ich verwende QGIS 2.0.1

Aktualisieren: hab ich auch versuchtsys.exit(). QGIS fängt es ab und öffnet ein Fenster mit folgendem Inhalt:

Bei der Ausführung des folgenden Codes ist ein Fehler aufgetreten: execfile('myscript.py') Traceback (letzter Aufruf zuletzt): Datei "", Zeile 1, in Datei "myscript.py", Zeile 14, in sys.exit() SystemExit

Aktualisieren:os.kill(os.getpid(), 9)funktioniert, aber es ist ein schmutziger Hack und ich suche nach etwas Besserem.


Versuchen Sie es in Ihrem Skript:

from qgis.utils importiere iface #deinen Code hier iface.actionExit().trigger()

Für mich geht das.

Bearbeitungshinweis:

Basierend auf Conley Owens' Kommentar habe ich mein Skript leicht geändert, um "etwas Nützliches" zu tun (wobei die Zeile, die importiert iface wurde kommentiert).

#from qgis.utils import iface import os os.system('clear') print "Hallo" iface.actionExit().trigger()

ich rannte qgis --code myscript.py an der Bash-Konsole, im Ordner des Skripts, und sofort bekam ich diese Fehlermeldung:

und darauf hinweisen, dass aus qgis.utils importieren iface Linie ist notwendig.

Wenn die erste Zeile nicht kommentiert wurde, hatte die Skriptausführung keine Fehler:

aber das Steuerelement befand sich nicht in der Python-Konsole; es befindet sich in der Bash-Konsole (beachten Sie dort den "Hello"-Druck). Aus diesem Grund Ihr os.kill(os.getpid(), 9) Befehl funktioniert, weil die Konsole geschlossen und QGIS automatisch geschlossen wird.

Die Lösung für dieses Problem, wenn ich die PyQGIS-API außerhalb von QGIS benötige, bestand darin, den PYTHONPATH in QGIS (/usr/share/qgis/python) in meinem .bashrc und zum Ausführen des Skripts in der Bash-Konsole als Python myscript.py. Es klappt.

Unter Windows können Sie den PYTHONPATH in der Python-Konsole von QGIS abrufen mit:

import os os.getcwd()

und verwenden Sie die Systemsteuerung von Windows, um es zu ändern.


Bei mir funktioniert das gut:

os importieren os._exit(0)

Es ist auch nützlich, dass Sie einen Exit-Code festlegen können.


Schau das Video: An Absolute Beginners Guide to QGIS 3