Ich möchte ein Python-Skript über ausführen qgis --code myscript.py
und dann sofort beenden. Ich verwende iface.actionExit().trigger()
, wodurch QGIS beendet wird, wenn ich es über die Python-Konsole ausführe, aber nicht, wenn es in das Skript eingefügt wird, an das ich übergebe --code
.
Was ist der richtige Weg, um sofort zu beenden? Ich verwende QGIS 2.0.1
Update : Ich habe es auch versucht sys.exit()
. QGIS fängt es auf und öffnet ein Fenster mit den folgenden Angaben:
An error occured during execution of following code:
execfile('myscript.py')
Traceback (most recent call last):
File "", line 1, in
File "myscript.py", line 14, in
sys.exit()
SystemExit
Update : os.kill(os.getpid(), 9)
funktioniert, aber es ist ein schmutziger Hack und ich suche etwas Besseres.
--screenshot
Flagge schneidet es einfach nicht).sys.exit()
in meinen Skripten verwendet habe, die funktioniert haben.echo "sys.exit()" > code.py; qgis --code code.py
Welche Version von QGIS haben Sie ausgeführt? Wie haben Sie die Skripte aufgerufen?Antworten:
Versuchen Sie es in Ihrem Skript:
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 iface importiert, kommentiert wurde).
Ich habe qgis --code myscript.py an der Bash-Konsole im Ordner des Skripts ausgeführt und sofort die folgende Fehlermeldung erhalten:
und darauf hinweisen, dass aus qgis.utils eine iface- Zeile importiert werden muss.
Wenn die erste Zeile nicht kommentiert ist, hatte die Skriptausführung keine Fehler:
Das Steuerelement befand sich jedoch nicht in der Python-Konsole. Es befindet sich in der Bash-Konsole (beachten Sie den "Hallo" -Druck dort). Aus diesem Grund funktioniert Ihr Befehl os.kill (os.getpid (), 9), da die Konsole geschlossen und QGIS automatisch geschlossen wird.
Die Lösung für dieses Problem bestand darin, wenn ich die PyQGIS-API außerhalb von QGIS benötige, PYTHONPATH to QGIS ( / usr / share / qgis / python ) in meine .bashrc-Datei aufzunehmen und das Skript in der Bash-Konsole als Python-Myscript auszuführen. py . Es klappt.
In Windows können Sie den PYTHONPATH in der Python-Konsole von QGIS herunterladen mit:
und verwenden Sie die Systemsteuerung von Windows, um sie zu ändern.
quelle
--code
Option oder nur über die Konsole versucht ? Welche Version von QGIS verwenden Sie?python myscript.py
Sie schlagen vor, die API außerhalb von qgis zu verwenden, wo ich dann den gesamten Aufwand für das AusführenQgsApplication.initQgis()
und Laden des Projekts übernehmen müsste mich selber? Wenn ja, geht dies einen ganz anderen Weg.Es funktioniert gut für mich, dies zu tun:
Es ist auch nützlich, dass Sie einen Exit-Code festlegen können.
quelle