10 votos

¿Cómo salir de QGIS después de ejecutar un python script?

Me gustaría ejecutar una secuencia de comandos de python a través de qgis --code myscript.py y, a continuación, salga inmediatamente. Estoy usando iface.actionExit().trigger(), que mata a QGIS cuando lo ejecuto desde la consola de python, pero no cuando se pone en el guión que me pase a --code.

¿Cuál es la forma correcta de salir inmediatamente? Yo estoy usando QGIS 2.0.1

Actualización: también he intentado sys.exit(). QGIS atrapa y aparece una ventana con el 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 sucio hack y estoy buscando algo mejor.

5voto

Yada Puntos 9489

Pruebe en su secuencia de comandos:

from qgis.utils import iface

#your code here

iface.actionExit().trigger()

A mí me funciona.

La Edición De La Nota:

Basado en Conley Owens'comment, he cambiado un poco mi script para hacer "algo útil" (donde la línea que importar iface se comentó).

#from qgis.utils import iface
import os

os.system('clear')
print "Hello"

iface.actionExit().trigger()

Corrí qgis --código myscript.py en la fiesta de la consola, dentro de la carpeta de la secuencia de comandos, y de inmediato recibí este mensaje de error:

enter image description here

y lo que indica que a partir de qgis.utils import iface línea es necesario.

Cuando la primera línea no está comentada la ejecución de secuencias de comandos no había errores:

enter image description here

pero el control no estaba en la consola de Python; es en la fiesta de la consola (observar el "Hola" print allí). Por esta razón su sistema operativo.matar a(os.getpid(), 9) comando funciona porque cerrar la consola y cerrar automáticamente de QGIS.

La solución a este problema, si tengo la necesidad de PyQGIS API fuera de QGIS, fue incluir el PYTHONPATH a QGIS (/usr/share/qgis/python) en mi .bashrc y ejecutar la secuencia de comandos en la consola bash como python myscript.py. Funciona.

En Windows, usted puede conseguir el PYTHONPATH en la Consola de Python de QGIS con:

import os
os.getcwd()

y utilizar el Panel de Control de Windows para cambiar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X