Saya ingin menjalankan skrip python melalui qgis --code myscript.py
dan kemudian segera keluar. Saya menggunakan iface.actionExit().trigger()
, yang membunuh QGIS ketika saya menjalankannya dari konsol python, tetapi tidak ketika dimasukkan ke dalam skrip yang saya berikan --code
.
Apa cara yang tepat untuk segera keluar? Saya menjalankan QGIS 2.0.1
Pembaruan : Saya juga sudah mencoba sys.exit()
. QGIS menangkapnya dan muncul jendela dengan yang berikut ini:
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
Perbarui : os.kill(os.getpid(), 9)
berfungsi tetapi ini adalah hack kotor dan saya mencari sesuatu yang lebih baik
--screenshot
bendera tidak memotongnya).sys.exit()
skrip saya yang sudah berfungsi.echo "sys.exit()" > code.py; qgis --code code.py
QGIS versi apa yang Anda jalankan? Bagaimana Anda memohon naskah?Jawaban:
Coba di skrip Anda:
Ini bekerja untuk saya.
Catatan Pengeditan:
Berbasis di Conley Owens'comment, saya sedikit mengubah skrip saya untuk melakukan "sesuatu yang berguna" (di mana baris yang mengimpor iface dikomentari).
Saya menjalankan qgis --code myscript.py di bash console, di dalam folder script, dan segera saya mendapat pesan kesalahan ini:
dan menunjukkan bahwa dari qgis.utils impor baris iface diperlukan.
Ketika baris pertama tidak dikomentari, eksekusi skrip tidak memiliki kesalahan:
tetapi kontrolnya tidak ada di konsol Python; itu ada di konsol bash (amati cetak "Hello" di sana). Untuk alasan ini , perintah os.kill (os.getpid (), 9) Anda berfungsi karena tutup konsol dan tutup QGIS secara otomatis.
Solusi untuk masalah ini, jika saya memerlukan API PyQGIS di luar QGIS, itu termasuk PYTHONPATH ke QGIS ( / usr / share / qgis / python ) di .bashrc saya dan menjalankan skrip di konsol bash sebagai python myscript. py . Berhasil.
Di Windows, Anda bisa mendapatkan PYTHONPATH di Konsol Python QGIS dengan:
dan gunakan Control Panel Windows untuk mengubahnya.
sumber
--code
opsi atau hanya dari konsol? QGIS versi apa yang Anda jalankan?python myscript.py
, apakah Anda menyarankan saya menggunakan api di luar qgis di mana saya kemudian harus menangani semua overhead menjalankanQgsApplication.initQgis()
dan memuat proyek diri? Jika demikian, ini akan menjadi rute yang sama sekali berbeda.Ini bekerja dengan baik bagi saya untuk melakukan ini:
Ini juga berguna bahwa Anda dapat mengatur kode keluar.
sumber