Me gustaría ejecutar un script de Python a través de qgis --code myscript.pyy luego salir inmediatamente. Estoy usando iface.actionExit().trigger(), que mata QGIS cuando lo ejecuto desde la consola de Python, pero no cuando pongo el script al que paso --code.
¿Cuál es la forma correcta de salir inmediatamente? Estoy ejecutando QGIS 2.0.1
Actualización : también lo he intentado sys.exit(). QGIS lo detecta y abre una ventana con lo siguiente:
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
Actualización : os.kill(os.getpid(), 9)funciona pero es un truco sucio y estoy buscando algo mejor.

--screenshotbandera simplemente no lo corta).sys.exit()en mis scripts que han funcionado.echo "sys.exit()" > code.py; qgis --code code.py¿Qué versión de QGIS estabas ejecutando? ¿Cómo estabas invocando los guiones?Respuestas:
Prueba en tu guión:
Esto funciona para mi.
Nota de edición:
Basado en el comentario de Conley Owens, cambié ligeramente mi script para hacer "algo útil" (donde se comentó la línea que importaba iface ).
Corrí qgis --code myscript.py en la consola bash, dentro de la carpeta de la secuencia de comandos, e inmediatamente recibí este mensaje de error:
e indicando que desde qgis.utils import iface line es necesario.
Cuando no se comenta la primera línea, la ejecución del script no tuvo errores:
pero el control no estaba en la consola de Python; está en la consola bash (observe la impresión "Hola" allí). Por esta razón, su comando os.kill (os.getpid (), 9) funciona porque cierra la consola y cierra QGIS automáticamente.
La solución a este problema, si necesito la API PyQGIS fuera de QGIS, fue incluir PYTHONPATH a QGIS ( / usr / share / qgis / python ) en mi .bashrc y ejecutar el script en la consola bash como python myscript. py . Funciona.
En Windows, puede obtener PYTHONPATH en la Consola Python de QGIS con:
y use el Panel de control de Windows para cambiarlo.
fuente
--codeopción o solo desde la consola? ¿Qué versión de QGIS está ejecutando?python myscript.py, ¿estás sugiriendo que use la API fuera de qgis donde tendría que manejar toda la sobrecarga de ejecutarQgsApplication.initQgis()y cargar el proyecto? ¿yo mismo? Si es así, esta es una ruta completamente diferente.Me funciona bien hacer esto:
También es útil que pueda establecer un código de salida.
fuente