Eclipse est un projet, décliné et organisé en un ensemble de sous-projets de développements logiciels, de la fondation Eclipse visant à développer un environnement de production de logiciels libre qui soit extensible, universel et polyvalent, en s’appuyant principalement sur Java.
Figurant parmi les grandes réussites de l’Open source, Eclipse est devenu un standard du marché des logiciels de développement, intégré par de grands éditeurs logiciels et sociétés de services.
Vous pouvez développer un plugin pour QGis avec un simple éditeur de texte, mais si vous voulez disposer d’un véritable environnement de développement, vous permettant de déboguer rapidement vos scripts, Eclipse est la meilleure solution.
Par où commencer?
Vous devez télécharger et installer Eclipse ET le plugin PyDev.
Pour télécharger la dernière version d’Eclipse :
Exécutez le fichier d’installation, en sélectionnant l’installation « Eclipse IDE for Java Developers »
Une fois l’installation terminée, Eclipse se lance. Vous devez installer alors le plugin PyDev pour Eclipse. Pour cela:
Allez dans le menu Help->Install New software
Dans « Work with » cliquez sur le bouton Add
Dans name tapez PyDev et dans Location l’adresse du site de téléchargement : http://pydev.org/updates, puis cliquez sur OK
Cochez la case PyDev, puis sur Next et complétez l’installation du plugin.
Une fois terminé, vous devez relancer Eclipse. Vous devez définir l’interpréteur Python à utiliser:
Allez dans le menu Windows->Preferences
Dans la fenêtre de gauche, recherchez l’item PyDev -> Interpreters -> Python Interpreter puis cliquez sur le bouton New
Rentrez PyQGis comme nom et pointez sur le fichier python.exe de votre installation QGis. Il se trouve dans le répertoire bin de celle-ci.
Quand vous cliquez sur OK, le programme d’installation recherche à ajouter automatiquement toutes les bibliothèques Python disponibles. Si vous les laissez, vous allez tout droit sur des conflits entre bibliothèques. Vous devez renseigner ces bibliothèques manuellement pour être sûr qu’elles ne rentreront pas en conflit.
Cliquez sur Deselect ALL puis sur OK.
Un message d’avertissement apparaît vous indiquant qu’aucune bibliothèque n’a été indiquée. Cliquez sur Proceed anyway.
Maintenant c’est la partie la plus ennuyeuse de l’installation. Armez vous de patience…
On va faire des aller-retour entre Eclipse et QGis pour renseigner toutes les bibliothèques nécessaires.
Pour chaque Path repéré dans QGis, vous devrez cliquez sur le bouton New Folder d’Eclipse et pointer sur le répertoire concerné:
Dans QGis nous allons utiliser la console Python. Ouvrez-la et tapez simplement qgis . Vous aurez en retour le path de l’API PyQGIS.
Usez de votre perspicacité pour décoder la réponse, en sachant que ça correspond à votre installation QGis. Dans cet exemple le début est Programmes/QgisEssen. Ignorez les /./ ainsi que le dernier élément. En effet, ce que vous devrez renseigner dans Eclipse c’est le répertoire de ce dernier élément.
Dans Eclipse cliquez sur New Folder et dans la fenêtre qui s’ouvre allez pointer sur le répertoire
Cliquez sur OK. Vous verrez alors le répertoire s’afficher dans la liste des System PYTHONPATH
Bon. Le plus dur reste à faire. Tapez das la console Python
import sys
sys.path
Vous aurez quelque chose comme
Pour chaque élément du path vous devrez répéter ce que nous venons de faire pour l’api PyQGIS, sauf pour les éléments dont vous êtes sûr qu’ils n’interviennent pas dans votre développement, à savoir ceux qui ne correspondent pas à votre nom d’utilisateur quand il s’agît des path commençant par \\Users\ ou ceux qui correspondent à d’autres environnements logiciels que QGis (dans cet exemple les path commençant par \\PCI Geomatics).
Une fois ceci fait pour tous les paths, ce n’est pas fini! Il reste à renseigner les dlls de QGis.
Dans la fenêtre de Préférences d’Eclipse, cliquez sur l’onglet Environnement
Cliquez sur le bouton New. Dan la fenêtre qui s’ouvre tapez PATH dans Name et dans Value vous devrez rentrer la liste des répertoires de QGis contenant des fichiers binaires, séparés par des ; .
Sous Windows prenez la ligne suivante en modifiant la version de QGis pour qu’elle corresponde à celle installée sur votre poste:
C:\Program Files\QGIS Brighton;C:\Program Files\QGIS
Brighton\bin;C:\Program Files\QGIS Brighton\apps\qgis\bin;C:\Program
Files\QGIS Brighton\apps\Python27\DLLs
La configuration d’Eclipse est terminée!!
Comment déboguer les scripts Python dans QGis?
Les deux QGIS et Eclipse doivent être configurés pour le débogage de sorte que les deux logiciels puissent communiquer. Eclipse se lie à QGIS afin de vous donner un aperçu des scripts Python en cours d’exécution dans QGIS. Cette approche vous permet d’exécuter des scripts de manière contrôlée, de suspendre l’exécution pendant que vous inspectez le programme pour détecter des bugs au moment et à l’endroit où ils ont lieu.
Quand vous lancez un script dans QGis, celui-ci passe la main à Eclipse pour exécuter le code, qui à sont tour et renvoyé vers QGis.
On doit donc configurer QGis pour qu’il envoie le flux vers Eclipse et Eclipse pour qu’il renvoie les résultats vers QGis.
Configuration de QGis.
Dan cette étape nous allons ajouter deux plugins à QGIS, qui permettent à Eclipse de communiquer avec QGIS. Un plugin, Plugin Reloader, vous permet de recharger un plugin QGIS en mémoire sans redémarrer QGIS, pour effectuer les tests plus rapidement. Le second plugin, Remote Debug, relie QGIS à Eclipse.
Remote Debug est un plugin expérimental, donc vous devez vous assurer que les plugins expérimentaux sont visibles dans la liste des plugins disponibles du Gestionnaire d’extensions QGIS.
Installez les deux plugins. Profitez pour installer aussi le HelloWorldPlugin qui vous servira à tester votre configuration.Notez l’emplacement du plugin :
Configuration d’Eclipse.
Lancez Eclipse
Allez dans le menu File->New->Project
Sélectionnez General puis Project et cliquez sur Next
Donnez un nom au projet, par exemple, pour tester le fonctionnement, ProjetHelloWorld, puis cliquez sur le bouton Finish.
Sélectionnez le projet que vous venez de créer, puis clic-droit et New -> Folder
Dans la fenêtre New Folder qui s’ouvre, cliquez sur le bouton Advanced
Cochez la case « Link to alternate location (Linked Folder) » puis avec le bouton browse pointez sur le répertoire du plugin à déboguer, dans notre exemple HelloWorld, dans le répertoire que vous avez noté lors de son installation.
Test de la configuration
Pour tester la configuration, nous allons placer un point d’arrêt dans le code du script HelloWorld, le lancer dans QGis, constater que le code est bien sur arrêt dans Eclipse, relancer l’exécution dans Eclipse et voir la fenêtre s’afficher dans QGis.
Pour placer le point d’arrêt:
Dans Eclipse, ouvrez le fichier HelloWorld.py en double-cliquant sur lui.
Allez dans le menu Window -> Perspective -> Open Perspective -> Other…
Dans la nouvelle fenêtre sélectionnez Debug et cliquez sur OK
La « perspective » de type débogage est prise par Eclipse
Cherchez la première ligne du plugin (def hello_world(self):) et double-cliquez à gauche du numéro de ligne pour placer un point d’arrêt (punaise verte)
A partir du menu PyDev, sélectionnez Start Debug Server.
Vous devrez voir s’afficher le message
Debug Server at port: 5678
Dans la console (en bas de la fenêtre Eclipse).
Maintenant, allez sur QGis. Dans le menu Extensions cliquez sur Remote Debug -> Remote Debug
La fenêtre de Remote Debugger s’ouvre. Une dernière configuration est nécessaire.
Assurez-vous que Debugger est bien placé sur PyDev(Eclipse). Dans PyDevd path, comme son nom l’indique, il faut indiquer où se trouve le fichier pydevd.py.
Le plus simple est de lancer une recherche dans le gestionnaire de fichiers Windows et de copier coller le path de ce fichier. Cette opération ne doit être faite que la première fois que vous utilisez Remote Debugger.
Une fois fait, cliquez sur le bouton Connect. la fenêtre se ferme et un message apparaît dans QGis vous indiquant: Python Debugging Active.
Lancez le plugin HeloWorld à partir du menu Extension -> HelloWorld ->HelloWorld.
Ceci entraîne, habituellement, l’affichage d’une fenêtre de message avec le texte Hello World. Par contre, ici, rien ne se passe.
Allez dans Eclipse.
Vous constaterez que la ligne avec le point d’arrêt est surlignée. Ceci veut dire que l’exécution du script est bien arrêtée à ce point la.
Pour redémarrer l’exécution, allez dans le menu Run->Resume
Allez dans QGis. La fenêtre Hello World est apparue!
La configuration de votre environnement de développement est terminée.
Un grand merci.
Une installation claire. ça fait deux jours que j’étais sur le problème de la configuration d’Eclipse. Le « simple » paragraphe : « Assurez-vous que Debugger est bien placé sur PyDev(Eclipse). Dans PyDevd path, comme son nom l’indique, il faut indiquer où se trouve le fichier pydevd.py » m’a sauvé.
Un grand merci aussi en ce qui me concerne. Article assez indispensable pour ceux qui veulent se mettre sérieusement à la programmation Python sous QGIS (ce qui sous-entend de le faire en dehors des fonctionnalités (assez limitées) qu’offre de base le logiciel …
J’ai une vague interrogation : comme doit-on gérer les entrées retournées par « sys.path » et qu’on ne retrouve pas dans l’arborescence (j’en ai quelques-unes…) ?
Pour avoir un peu testé je pense qu’il manque une précision : pour que la définition de l’interpréteur ne génère pas une erreur de type « unable to get info on the interpreter » il faut définir (sous windows en tout cas) les variables d’environnement PYTHONHOME et PYTHONPATH …
Merci pour ce tuto.
Toutefois, je ne vois pas d’indication sur la manière de deboguer un script de la console Python. Seul l’exemple du plugin est donné.
Quelqu’un pourrait-il développer à ce sujet svp ?
Cette page est bien utile, merci.
Pour la configuration de python, j’ai préféré démarrer eclipse à partir du dossier OSGEO4W, après avoir notamment lancé le script py3_env, histoire que l’installation reconnaisse automatiquement les chemins et les bibliothèques. Est-ce qu’il y a une contre-indication ?
Non, aucune. Dans l’article l’install de QGis avait été faite avec l’installateur indépendant et pas avec Osgeo4W