si trato de cargar el complemento de capas abiertas en una aplicación independiente, siempre falla con False, aunque las rutas están configuradas y el complemento se muestra disponible.
(probado en Ubuntu 14.04, QGIS 2.4, python-2.7)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os
import qgis
import qgis.gui, qgis.utils
from qgis.core import *
from PyQt4 import QtGui
# open an app
app = QtGui.QApplication(sys.argv)
# supply path to where is your qgis installed
QgsApplication.setPrefixPath(u'/usr', True)
# load providers
QgsApplication.initQgis()
# set up the plugins
qgis.utils.plugin_paths = \
['/usr/share/qgis/python/plugins',
os.path.expanduser('~/.qgis2/python/plugins'),]
qgis.utils.updateAvailablePlugins()
print qgis.utils.available_plugins
print "...load:", qgis.utils.loadPlugin(u'openlayers_plugin')
print "...start:", qgis.utils.startPlugin(u'openlayers_plugin')
print "active:\n",qgis.utils.active_plugins
canvas = qgis.gui.QgsMapCanvas()
canvas.show()
Cuál es el problema aquí ? post ¿Cómo recuperar capas de capas abiertas de pyqgis? se refiere a la consola de Python incrustada, donde el complemento estaba mágicamente disponible antes.
¡Gracias!
Respuestas:
Esto nunca, bueno, tal vez con algunos hacks, va a funcionar bien. Los complementos normalmente usan el
QgisInterface
objeto que da acceso a la interfaz y métodos de QGIS. No tiene este objeto en su secuencia de comandos independiente. La mayoría de los complementos, si no todos, no están diseñados para ejecutarse fuera de QGIS como este.fuente
DummyQgisInterface
debería ser posible ...Siendo muy entusiasta con el paradigma TDD, pasé un tiempo armando una interfaz ficticia (basada en algunos fragmentos de código que encontré en Internet) que permite llamar a QGIS y QGIS-plugins de manera independiente.
La interfaz que se me ocurrió se ve de la siguiente manera y la utilicé para todas mis pruebas unitarias desde:
Si desea probar / usar QGIS más la interacción con un complemento instalado ahora, haga lo siguiente (en su configuración de prueba de unidad, por ejemplo):
Para obtener más ejemplos de uso y ejemplos de la vida real sobre aplicaciones QGIS de prueba de unidades, puede consultar nuestra página github ( https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole ). Las pruebas de carpeta contienen todas las pruebas unitarias (que en su mayoría prueban los módulos en el paquete qgisinteraction, que contiene un módulo, que interactúa con el plugin point_sampling_tool-plugin).
fuente
utils.iface = iface
dos líneas antes y tuve que burlarme de un QgsMessageBar en el iface ...