Я хотел бы запустить скрипт Python через, qgis --code myscript.py
а затем сразу выйти. Я использую iface.actionExit().trigger()
, который убивает QGIS, когда я запускаю его из консоли python, но не когда помещаю в скрипт, которому я передаю --code
.
Как правильно немедленно выйти? Я использую QGIS 2.0.1
Обновление : я тоже пробовал sys.exit()
. QGIS ловит его и открывает окно со следующим:
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
Обновление : os.kill(os.getpid(), 9)
работает, но это грязный взлом, и я ищу что-то лучше.
--screenshot
флаг просто не обрезает его).sys.exit()
в моих сценариях, которые работали.echo "sys.exit()" > code.py; qgis --code code.py
Какую версию QGIS вы использовали? Как вы вызывали сценарии?Ответы:
Попробуйте в своем скрипте:
Меня устраивает.
Редактирование Примечание:
Основываясь на комментариях Конли Оуэнса, я немного изменил свой сценарий, чтобы сделать «что-то полезное» (где была закомментирована строка, импортирующая iface ).
Я запустил qgis --code myscript.py в консоли bash, внутри папки скрипта, и сразу же получил это сообщение об ошибке:
и указание на то, что из qgis.utils необходимо импортировать строку iface .
Когда первая строка не закомментирована, выполнение скрипта не было ошибок:
но управление не было в консоли Python; это находится в консоли bash (наблюдайте печать "Hello" там). По этой причине ваша команда os.kill (os.getpid (), 9) работает, потому что закрывает консоль и автоматически закрывает QGIS.
Решением этой проблемы, если мне нужен API PyQGIS вне QGIS, было включение PYTHONPATH в QGIS ( / usr / share / qgis / python ) в мой .bashrc и запуск сценария в консоли bash в виде сценария Python. ру . Оно работает.
В Windows вы можете получить PYTHONPATH в консоли Python QGIS с помощью:
и используйте панель управления Windows, чтобы изменить его.
источник
--code
опцией или только с консоли? Какую версию QGIS вы используете?python myscript.py
, так как вы предлагаете использовать API вне qgis, где мне пришлось бы тогда справляться со всеми накладными расходами при запускеQgsApplication.initQgis()
и загрузке проекта? себя? Если так, то это будет совершенно другой путь.Для меня это хорошо работает:
Также полезно, что вы можете установить код выхода.
источник