Je voudrais exécuter un script python via qgis --code myscript.py
puis quitter immédiatement. J'utilise iface.actionExit().trigger()
, ce qui tue QGIS lorsque je l'exécute à partir de la console python, mais pas lorsqu'il est placé dans le script auquel je passe --code
.
Quelle est la bonne façon de quitter immédiatement? J'utilise QGIS 2.0.1
Mise à jour : j'ai également essayé sys.exit()
. QGIS l'attrape et ouvre une fenêtre avec les informations suivantes:
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
Mise à jour : os.kill(os.getpid(), 9)
fonctionne mais c'est un hack sale et je cherche quelque chose de mieux.
--screenshot
drapeau ne le coupe tout simplement pas).sys.exit()
dans mes scripts qui ont fonctionné.echo "sys.exit()" > code.py; qgis --code code.py
Quelle version de QGIS utilisiez-vous? Comment invoquiez-vous les scripts?Réponses:
Essayez dans votre script:
Ça marche pour moi.
Note d'édition:
Basé dans le commentaire de Conley Owens, j'ai légèrement modifié mon script pour faire "quelque chose d'utile" (où la ligne qui importe iface a été commentée).
J'ai exécuté qgis --code myscript.py sur la console bash, à l'intérieur du dossier du script, et j'ai immédiatement reçu ce message d'erreur:
et indiquant que depuis qgis.utils, l'importation d'une ligne iface est nécessaire.
Lorsque la première ligne n'est pas commentée, l'exécution du script n'a pas eu d'erreurs:
mais le contrôle n'était pas dans la console Python; il se trouve dans la console bash (observez l'impression "Bonjour" là-bas). Pour cette raison, votre commande os.kill (os.getpid (), 9) fonctionne car fermez la console et fermez automatiquement QGIS.
La solution à ce problème, si j'avais besoin de l'API PyQGIS en dehors de QGIS, c'était d'inclure le PYTHONPATH vers QGIS ( / usr / share / qgis / python ) dans mon .bashrc et d'exécuter le script dans la console bash en tant que myscript python. py . Ça marche.
Sous Windows, vous pouvez obtenir le PYTHONPATH dans la console Python de QGIS avec:
et utilisez le Panneau de configuration de Windows pour le changer.
la source
--code
option ou uniquement depuis la console? Quelle version de QGIS utilisez-vous?python myscript.py
, suggérez-vous d'utiliser l'api en dehors de qgis où je devrais alors gérer tous les frais généraux liés à l'exécutionQgsApplication.initQgis()
et au chargement du projet moi même? Si c'est le cas, cela va dans une voie entièrement différente.Cela fonctionne bien pour moi de le faire:
Il est également utile que vous puissiez définir un code de sortie.
la source