jika saya mencoba untuk memuat plugin openlayers dalam aplikasi mandiri itu selalu gagal dengan False, meskipun jalur ditetapkan, dan plugin menunjukkan tersedia.
(diuji pada 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()
apa yang terjadi disini ? memposting Bagaimana cara mengambil lapisan openlayers dari pyqgis? merujuk ke konsol python tertanam, di mana plugin itu tersedia secara ajaib sebelumnya.
Terima kasih!
Jawaban:
Ini tidak pernah, well mungkin dengan beberapa peretasan, akan bekerja dengan baik. Plugin biasanya menggunakan
QgisInterface
objek yang memberikan akses ke antarmuka dan metode QGIS. Anda tidak memiliki objek ini di skrip mandiri Anda. Sebagian besar plugin, jika tidak semua, tidak dirancang untuk berjalan di luar QGIS seperti ini.sumber
DummyQgisInterface
harus mungkin ...Menjadi sangat tertarik pada paradigma TDD, saya telah menghabiskan beberapa waktu menyusun dummy-interface (berdasarkan pada beberapa fragmen kode yang saya temukan di internet) yang memungkinkan memanggil QGIS dan QGIS-plugins standalone.
Antarmuka yang saya buat terlihat seperti berikut dan saya menggunakannya untuk semua unit-test saya sejak:
Jika Anda ingin menguji / menggunakan QGIS plus interaksi dengan plugin yang terinstal sekarang, lakukan hal berikut (mis. Dalam setUp yang belum dipatenkan misalnya):
Untuk beberapa contoh penggunaan lainnya dan beberapa contoh nyata pada aplikasi pengujian QGIS unit, Anda dapat memeriksa halaman github kami ( https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole ). Tes folder berisi semua unit-tes (yang sebagian besar menguji modul dalam paket interaksi qgis, yang berisi modul, yang berinteraksi dengan plugin point_sampling_tool).
sumber
utils.iface = iface
dua baris sebelumnya dan harus mengejek QgsMessageBar di iface ...