Python betiği çalıştırdıktan sonra QGIS'den nasıl çıkılır?


10

Ben üzerinden bir python komut dosyası çalıştırmak qgis --code myscript.pyve sonra hemen çıkmak istiyorum. Ben kullanıyorum iface.actionExit().trigger()ben piton konsoldan çalıştırdığınızda QGIS öldürür hangi ama geçmek o senaryo koymak değilken --code.

Hemen çıkmanın doğru yolu nedir? QGIS 2.0.1 kullanıyorum

Güncelleme : Ben de denedim sys.exit(). QGIS onu yakalar ve aşağıdakileri içeren bir pencere açar:

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

Güncelleme : os.kill(os.getpid(), 9)çalışıyor ama kirli bir hack ve daha iyi bir şey arıyorum.


1
Yapabilirsin ama neden?
Nathan W

1
Otomatik olarak bir baskı bestecisi ile pdf yapıyorum ( --screenshotbayrak kesmiyor).
Conley Owens

Potansiyel cevaplayıcılara yardımcı olabileceğinden lütfen kodunuzu soruya ekleyebilir misiniz? Bunu sys.exit(), işe yarayan senaryolarımda da kullandığım için soruyorum .
Joseph

echo "sys.exit()" > code.py; qgis --code code.pyHangi QGIS sürümünü kullanıyordunuz? Senaryoları nasıl çağırıyordun?
Conley Owens

Yanıtlar:


5

Senaryonuzu deneyin:

from qgis.utils import iface

#your code here

iface.actionExit().trigger()

Benim için çalışıyor.

Düzenleme Notu:

Conley Owens'comment dayanarak, senaryomu "yararlı bir şey" yapmak için hafifçe değiştirdim (burada iface ithal eden satır yorumlandı).

#from qgis.utils import iface
import os

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

iface.actionExit().trigger()

Ben komut dosyası klasörü içinde bash konsolunda qgis --code myscript.py koştu ve hemen bu hata iletisini aldım:

resim açıklamasını buraya girin

ve qgis.utils dosyasından iface satırının gerekli olduğunu belirtir .

İlk satıra yorum yapılmadığında, kod yürütmesinde hatalar olmadı:

resim açıklamasını buraya girin

ancak kontrol Python konsolunda değildi; bash konsolundadır (oradaki "Merhaba" baskısına dikkat edin). Bu nedenle os.kill (os.getpid (), 9) komutunuz konsolu kapatıp QGIS'i otomatik olarak kapattığından çalışır.

Ben QGIS dışında PyQGIS API gerekiyorsa bu konuya çözüm, bu QGIS (için PYTHONPATH dahil oldu / usr / share / QGIS / piton benim de) .bashrc gibi bash konsolunda komut dosyasını çalıştırmak için piton MyScript. py . İşe yarıyor.

Windows'da, PYTHONPATH ürününü QGIS Python Konsolundan alabilirsiniz:

import os
os.getcwd()

ve değiştirmek için Windows'un Denetim Masası'nı kullanın.


1
Ben denedim (orijinal soruda belirtildiği gibi). Çalışmıyor. Bunu gerçekten --codeseçenekten mi yoksa yalnızca konsoldan mı denediniz ? Hangi QGIS sürümünü kullanıyorsunuz?
Conley Owens

Lütfen, "Düzenleme Notum" a bakın.
xunilk

1
Yardım için teşekkürler, ancak komut dosyasını bash konsolunda çalıştırarak ne demek istediğinizden emin değilim python myscript.py, qgis'in dışında api'yi kullanmanızı QgsApplication.initQgis()ve projeyi çalıştırmanın ve yüklemenin tüm yükünü ele almam gerektiğini önerir misiniz? kendim? Eğer öyleyse, bu tamamen farklı bir rotaya gidiyor.
Conley Owens

1

Bunu yapmak benim için iyi çalışıyor:

import os
os._exit(0)

Bir çıkış kodu ayarlamanız da yararlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.