Wenn ich versuche, das Openlayers-Plugin in eine eigenständige Anwendung zu laden, schlägt dies immer mit False fehl, obwohl Pfade festgelegt sind und Plugin-Shows verfügbar sind.
(getestet unter 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()
Was ist das Problem hier? post Wie holt man OpenLayer-Ebenen von Pyqgis? bezieht sich auf die eingebettete Python-Konsole, in der das Plugin zuvor magisch verfügbar war.
Vielen Dank!
Antworten:
Das wird nie, vielleicht mit ein paar Hacks, gut funktionieren. Plugins verwenden normalerweise das
QgisInterface
Objekt, das den Zugriff auf die QGIS-Schnittstelle und -Methoden ermöglicht. Sie haben dieses Objekt nicht in Ihrem eigenständigen Skript. Die meisten Plugins, wenn nicht alle, können nicht außerhalb von QGIS ausgeführt werden.quelle
DummyQgisInterface
sollte möglich sein ...Da ich mich sehr für das TDD-Paradigma interessiere, habe ich einige Zeit damit verbracht, eine Dummy-Schnittstelle (basierend auf einigen Codefragmenten, die ich im Internet gefunden habe) zusammenzustellen, die das eigenständige Aufrufen von QGIS- und QGIS-Plugins ermöglicht.
Die Schnittstelle, die ich mir ausgedacht habe, sieht wie folgt aus und ich habe sie seitdem für alle meine Unit-Tests verwendet:
Wenn Sie QGIS und die Interaktion mit einem installierten Plugin jetzt testen / verwenden möchten, gehen Sie wie folgt vor (z. B. in Ihrem unittest setUp):
Weitere Anwendungsbeispiele und einige Beispiele aus der Praxis für QGIS-Apps zum Testen von Einheiten finden Sie auf unserer Github-Seite ( https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole ). Die Ordner Tests enthalten alles Einheit-Tests (die die Module in dem das Paket qgisinteraction meist Tests sind, die ein Modul enthält, das interagiert mit der point_sampling_tool-Plugin).
quelle
utils.iface = iface
Laufen gebracht , musste aber zwei Zeilen früher machen und musste eine QgsMessageBar im iface verspotten ...