QGIS Plugins mit Python: Unterschied zwischen den Versionen
Foo (Diskussion | Beiträge) |
Foo (Diskussion | Beiträge) |
||
Zeile 103: | Zeile 103: | ||
==== Remote-Debugger / Debug Server ==== | ==== Remote-Debugger / Debug Server ==== | ||
− | Als erstes wechseln wir in die Debug Perspektive von Eclipse. Dadurch erhalten wir zwei zusätzliche Symbole im Toolbar, welche uns erlauben den Remote-Debugger zu Starten/Stoppen. Alternativ dazu können wir den Debug-Server im Menu ''Pydev->Start/End Debug Server'' kontrollieren. | + | Als erstes wechseln wir in die Debug Perspektive von Eclipse. Dadurch erhalten wir zwei zusätzliche Symbole im Toolbar [[Datei:EclipseDebugServerIcons.png|200px|thumb|right|Toolbar Icons]] , welche uns erlauben den Remote-Debugger zu Starten/Stoppen. Alternativ dazu können wir den Debug-Server im Menu ''Pydev->Start/End Debug Server'' kontrollieren. |
Wir starten nun den Remote-Debugger durch anklicken des entsprechenden Symbols oder im Menu ''Pydev->Start Debug Server''. In der Konsole wird nun ausgegeben, auf welchem Port der Debug Server auf eine Verbindung wartet. Der Port kann in den allgemeinen PyDev Einstellungen unter Debug angepasst werden. | Wir starten nun den Remote-Debugger durch anklicken des entsprechenden Symbols oder im Menu ''Pydev->Start Debug Server''. In der Konsole wird nun ausgegeben, auf welchem Port der Debug Server auf eine Verbindung wartet. Der Port kann in den allgemeinen PyDev Einstellungen unter Debug angepasst werden. |
Version vom 28. November 2011, 18:45 Uhr
Siehe auch:
Wichtige Informationen:
- Dokumentation/Tutorials:
- PyQGis Cookbook (QGIS Documentation), insbesondere Kap. 'Developing Python Plugins' (PyQGIS, QT4, Eclipse, Eclipse PyDev)
- 'Writing Python Plugins' (QGIS Wiki)
- QGIS-Python-Plugin-Verzeichnis: C:\Documents and Settings\<username>\.qgis\python\plugins (Windows).
- QTDesigner unter Windows ist nun Bestandteil von der QT IDE QTCreator.
QGIS Plugins mit Python:
- Documentation zum Schreiben von PyQGIS-Plugins:
- QGIS Manual - Guide: http://qgis.org/en/documentation/manuals.html > QGIS Coding and Compilation Guide
- Forum: http://forum.qgis.org/viewforum.php?f=5
- Wiki-Artikel: http://www.qgis.org/wiki/Writing_Python_Plugins
- Tutorials / Bücher:
- Quantum GIS Blog
- How to debug a plugin using PDB on QGIS Wiki (for C++ on Linux see How to debug QGIS pugins)
- Rapid GUI Programming with Python and Qt, Summerfield, Mark - Gutes Buch zu PyQt 4, Python und QT wird auch erklärt.
- Tools:
- QGIS Python Plugin Builder: http://pyqgis.org/builder/plugin_builder.py
Manuelles Installieren eines Python-Plugins myPlugin:
- Download myPlugin.zip.
- Auspacken von myPlugin in einem temporären Verzeichnis; nun sollte ein Ordner myPlugin/ vorhanden sein.
- Den Ordner myPlugin ins QGIS-Python-Plugin-Verzeichnis kopieren.
- QGIS (neu) starten und "Erweiterungen verwalten..." wählen. Dort sollte ein neuer Eintrag stehen => ankreuzen.
Inhaltsverzeichnis
Eclipse/PyDev mit Unit-Testing und Debugging
Wie kann man Eclipse mit PyDev zum Entwickeln von QGIS-Plugins (QT4) aufsetzen inklusive Unit-Testing und Debugging (gem. [1] )?
Installation Eclipse
- Download minimalstes Eclipse 3.x, sprich nur Eclipse Platform Runtime Binary, welches leider nicht direkt auf der Hauptseite verfügbar ist
- http://download.eclipse.org/eclipse/downloads/eclipse3x.php
- -> Latest Release
- Zur Platform Runtime Binary Sektion navigieren und entsprechenden Download starten
- Installation
Einrichten Eclipse
- Installation/Einrichten des Eclipse Marketplace
- Eclipse starten
- Help->Install New Software
- Indigo - http://download.eclipse.org/releases/indigo als Quelle auswählen
- Im Filter Feld Market eingeben
- Marketplace Client auswählen und installieren
- Installation PyDev
- Help->Eclipse Marketplace...
- Im Suchfeld nach pydev suchen
- PyDev - Python IDE for Eclipse installieren
- Konfiguration nach Eclipse Neustart:
- Window->Preferences
- PyDev->Interpreter - Python für Linux oder PyDev->Interpreter - Iron Python und dann Auto Config wählen
- Hinweis
- PyDev und den eingebauten Debugger kennen lernen: http://www.vogella.de/articles/Python/article.html
- Optional: Sourcecontrol EGit einrichten
- Help->Eclipse Marketplace...
- Im Suchfeld nach egit suchen
- EGit - Git Team Provider auswählen und installieren
- CDT
- Help->Install New Software
- Indigo - http://download.eclipse.org/releases/indigo als Quelle auswählen
- In der Kategorie Programming Languages C/C++ Development Tools auswählen und installieren
- Python und QT4
- Folgende Pakete müssen für Linux, am Beispiel Ubuntu, installiert werden um mit qt4 und sqlite arbeiten zu können
- python-qt4-sql
- python-qt4-dev
- libqt4-dev
- libqt4-sql-sqlite
- qt4-dev-tools
- qt4-doc-html
- pyqt4-dev-tools
- Installation Eclipse Plugin
- Download von http://qt.nokia.com/products/eclipse-integration/
- Hinweis
- Um die qt-Umgebung, sprich Designer etc. kennen zu lernen, ist das eingebaute Eclipse-CheatSheet sehr gut geeignet. Eclipse->Help->Cheat Sheets...
- Ein Wiki mit vielen Tutorials gibts hier: http://diotavelli.net/PyQtWiki/Tutorials
Eine alternative Anleitung zur Installation gibts hier: http://popdevelop.com/2010/04/setting-up-ide-and-creating-a-cross-platform-qt-python-gui-application/
- QGIS installieren
- Nach Anleitung von http://www.qgis.org/wiki/Download vorgehen
- Zur Entwicklung libqgis-dev zusätzlich installieren
Debugging von Python-QGIS-Plugins mit Eclipse
- Warum ist das Debugging von Plugins nicht so einfach wie bei einem Python-Programm?
- Grund dafür ist, dass bei Plugins ein weiterer Prozess, also nicht unser Plugin-Code, die Lebensdauer unseres Codes bestimmt. Das heisst, dass wir in den wenigsten Fällen direkt in den Programmcode des 'Host'-Prozesses eingreifen können um an der Stelle zu warten, an welcher unser Plugin zum Einsatz kommt.
- Wie verbinden wir nun den Eclipse-PyDev-Debugger und ein QGIS-Plugin?
- Die Lösung die PyDev hierzu anbietet, verwendet einen sogenannten Remote-Debugger. Dabei agiert Eclipse-PyDev als Server, welcher auf einem bestimmten Port (Default ist 5678) auf eine Verbindung eines entsprechend ausgerüsteten Python-Programmes wartet. Sobald die Verbindung zu Stande gekommen ist können wir wie gewohnt debuggen.
Remote-Debugger / Debug Server
Als erstes wechseln wir in die Debug Perspektive von Eclipse. Dadurch erhalten wir zwei zusätzliche Symbole im Toolbar , welche uns erlauben den Remote-Debugger zu Starten/Stoppen. Alternativ dazu können wir den Debug-Server im Menu Pydev->Start/End Debug Server kontrollieren.Wir starten nun den Remote-Debugger durch anklicken des entsprechenden Symbols oder im Menu Pydev->Start Debug Server. In der Konsole wird nun ausgegeben, auf welchem Port der Debug Server auf eine Verbindung wartet. Der Port kann in den allgemeinen PyDev Einstellungen unter Debug angepasst werden.
Anpassungen im Python-Plugin Code
Damit unser Plugin mit dem Debug Server verbinden kann müssen wir den folgenden Code einbauen:
import os from os import * pydevPysrcPath = os.environ.get('ECLIPSE_PYSRC_PATH', '') if pydevPysrcPath: if os.path.exists(pydevPysrcPath): import sys sys.path.append(pydevPysrcPath) import pydevd pydevd.settrace() else: print "Specified ECLIPSE_PYSRC_PATH [%s] does not exist" % (pydevPysrcPath)
Damit haben wir die Möglichkeit den Eclipse-Debug-Server nur dann zu kontaktieren, wenn wir auch die entsprechende Umgebungsvariable ECLIPSE_PYSRC_PATH gesetzt haben. Dies funktioniert natürlich nur dann, wenn wir auch die 'Host'-Applikation aus dieser Konsole starten.
- Weiterführende Informationen
- remote-debugging: http://pydev.org/manual_adv_remote_debugger.html
Testing von PyQT Apps
- Testen von Qt-GUI Komponenten: http://www.voom.net/pyqt-qtest-example