QGIS DevTools — Déboguer et développer ses plugins plus efficacement

Le développement de plugins QGIS peut parfois être fastidieux : recharger le plugin, déboguer, inspecter l’interface, exécuter des scripts, etc.
C’est là que DevTools pour QGIS (NextGIS) entre en jeu — un ensemble d’outils conçus pour rendre le développement plus fluide, interactif, rapide et ergonomique.



1. Qu’est-ce que DevTools pour QGIS ?

DevTools est un plugin / extension pour QGIS qui propose une palette d’outils de développement intégrés. Il permet :

  • d’exécuter des scripts Python directement depuis l’interface QGIS,
  • de recharger à chaud (hot reload) votre plugin ou votre code sans redémarrage complet,
  • d’inspecter les widgets, layouts, objets Qt, etc.,
  • de visualiser les logs, les traces, d’exécuter du code dans un shell QGIS,
  • et d’accélérer votre cycle de développement plugin.

Son objectif : réduire le “temps mort” entre une modification de code et son test dans QGIS.

QGIS DevTools est une boîte à outils dédiée au développement et au débogage de plugins QGIS.
Il offre actuellement deux fonctionnalités principales :

  1. Lancement d’un serveur de débogage (debugpy) — permettant de connecter un IDE comme Visual Studio Code, PyCharm, ou VS Codium pour déboguer en direct un plugin sans quitter QGIS.
  2. Accès rapide à la console Python intégrée — pour tester du code, inspecter les objets de QGIS, ou exécuter des portions de code de vos plugins.

D’autres outils sont en préparation (profilage, rechargement de modules, logs étendus).


2. Fonctionnalités principales

Voici quelques capacités offertes par DevTools :

  • Console interactive intégrée à QGIS : vous pouvez exécuter des commandes Python dans le contexte de QGIS sans quitter l’interface.
  • Reload automatique des modules : après modification, vous pouvez recharger ton plugin sans redémarrer QGIS.
  • Inspection des widgets Qt : voir la hiérarchie des objets, leurs propriétés, leurs signaux.
  • Profilage / logs / débogage : capture des erreurs, des exceptions, analyses de performance.
  • Templates de boilerplate pour créer rapidement un squelette de plugin.
  • Raccourcis & menus pour lancer des actions de dev (réexécution, rafraîchissement, etc.).


3. Configuration de QGIS

Installation des dépendances

DevTools utilise debugpy comme bibliothèque sous-jacente, vous devez donc l’installer au préalable.
Vous devez aussi installer VS Code si vous ne l’avez pas déjà. L’extension Python Debugger pour VS Code est nécessaire. Allez dans l’onglet Extensions (Ctrl+Maj+X), recherchez Python Debugger et installez-la. Redémarrez ensuite VS Code.


Sous Windows

  1. Trouvez le dossier Python de QGIS

    • Exemple pour QGIS 3.44 : C:\Program Files\QGIS 3.44.3\apps\Python39 ou C:\Program Files\QGIS 3.44.3\apps\Python312 selon la version de QGIS.

  2. Ouvrez l’invite de commande dans ce dossier

    • Dans l’Explorateur de fichiers : clic droit + Ouvrir dans le terminal.

  3. Installez debugpy
    Tapez cette commande :
    python -m pip install debugpy
    Si vous avez plusieurs versions de Python, vous pouvez préciser le chemin complet :
    "C:\Program Files\QGIS 3.44.3\apps\Python39\python.exe" -m pip install debugpy


Sous Linux / macOS

Même logique :

/path/to/qgis/python3 -m pip install debugpy

Souvent :

/usr/bin/qgis --version
which python3

puis installez debugpy dans le même environnement.


Vérification

Dans la console Python de QGIS, vous pouvez vérifier :

import debugpy
print(debugpy.__version__)

Si aucune erreur n’apparaît → c’est bon .


4. Installation & configuration

Installation via le dépôt officiel

  1. Ouvrir Plugins → Installer des extensions
  2. Rechercher DevTools (ou qgis_devtools)
  3. Installer et activer le plugin.

Cloner le dépôt GitHub

Si vous voulez la version la plus récente ou contribuer :

git clone https://github.com/nextgis/qgis_devtools.git

Puis vous pouvez copier ce dossier dans votre répertoire des plugins QGIS pour le test local.

Configuration utile

  • Vérifiez les dépendances Python si nécessaire (souvent inclus dans le plugin).
  • Activez le mode “reload automatique” dans les paramètres du plugin (si disponible).
  • Ouvrez la console DevTools (menu ou bouton) pour accéder aux fonctions interactives.

La gestion du plugis installs est accessible via la petite icône en forme d’insecte située dans la partie inférieure droite de l’interface QGIS.


5. Déboguer un plugin QGIS avec VS Code

C’est la fonctionnalité la plus utile pour les développeurs.

Activer le mode débogage

  • Lancez QGIS.
  • Allez dans Plugins > DevTools > Start Debugpy Server.
  • Le plugin vous indique sur quel port le serveur debugpy écoute (par défaut : 5678).

Configurer VS Code

Vous verrez le bandeau suivant dans votre fenêtre QGGis

Cliquez sur le bouton Copy launch.json template. Dans votre dossier de développement du plugin, ajoutez un fichier .vscode/launch.json et collez ce contenu :


{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to QGIS",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "127.0.0.1",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "C:/Users/nasca/AppData/Roaming/QGIS/QGIS3/profiles/default/python/plugins/<YOUR_PLUGIN_NAME>"
}
],
"justMyCode": true
}
]
}

Dans le code collé, dans l’élément configurations/pathMappings/remoteRoot, remplacez le texte <YOUR_PLUGIN_NAME> par le nom du répertoire du plugin.

Interpreteur

Vérifiez que l’interpreteur configuré sur VS Code est bien la version pythons de votre installation QGis. L’interpeteur en cours apparaît en bas , à droite , de la fenêtre VS Code

S’il ne correspond pas, cliquez dessus pour ouvrir la fen^tre de conficuration et rentrez le path de votre version python QGis.


Revenez à QGIS et appuyez,si c’est nécessaire, sur le bouton Démarrer dans le panneau DevTools.

Dans VS Code, passez à l’onglet Exécuter et déboguer (Ctrl + Maj + D) et cliquez sur “Attach to QGIS”.

Vous pouvez maintenant :

  • Mettre des points d’arrêt (breakpoints) dans votre code,
  • Inspecter les variables et objets QGIS en temps réel,
  • Reprendre l’exécution ligne par ligne.

Vous lancez l’exécution du plugin dans QGis et lorsqu’un point d’arrêt est rencontyré, l’exécution se fige et le contrôle est passé à VS Code.

Astuce

Si vous travaillez sur plusieurs projets QGIS, pensez à changer le port utilisé par debugpy (dans le menu DevTools) pour éviter les conflits.

Et pour éviter d’avoir à retaper vos commandes Python, activez aussi le panneau Console Python intégré de QGIS.


Astuces & bonnes pratiques

  • Pense à nettoyer les caches de Python (.pyc), surtout en reload multiple.
  • Ne mets pas la console DevTools dans le plugin final destiné aux utilisateurs — elle est pour le développeur.
  • Utilise des noms clairs pour les modules, pour éviter les conflits en reload.
  • Pour les tests, confronte ton plugin rechargé avec un redémarrage complet pour s’assurer qu’il fonctionne aussi “à froid”.
  • Combine DevTools avec un bon IDE (VSCode, PyCharm) : tu modifies dans l’IDE, tu relances via DevTools.


6. Comparaison avec d’autres workflows

Méthode Avantages Limites
Redémarrage QGIS complet Simple et “propre” Très lent pour grosses extensions
Utiliser reload() dans le code Rapide pour modules simples Risque de fuites, références orphelines
DevTools pour QGIS Rechargement à chaud, console interactive, inspection facile À utiliser uniquement en dev, pas en production

DevTools se positionne comme le meilleur choix pour le cycle de développement rapide.


7. Conclusion & perspectives

DevTools pour QGIS est un outil précieux pour les développeurs de plugins, permettant de réduire drastiquement les temps de test et de débogue.
Il facilite l’itération rapide, l’exploration interactive et un meilleur aperçu des composants Qt.


Un outil simple mais précieux

Même s’il ne fait “que” lancer un serveur de débogage, QGIS DevTools change complètement la manière de développer des plugins QGIS.
Il permet de gagner du temps, de comprendre plus vite les erreurs, et de tester des scénarios complexes en direct dans l’environnement QGIS réel.


Liens utiles


Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *