Skip to content

Commit 5ca7a87

Browse files
committed
Amorce article dév plugins qgis
1 parent 5057039 commit 5ca7a87

File tree

1 file changed

+165
-0
lines changed

1 file changed

+165
-0
lines changed
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
---
2+
title: "Configuration de mon environnement de développement de plugins QGIS"
3+
authors:
4+
- Julien MOURA
5+
categories:
6+
- article
7+
date: "2022-06-09 10:20"
8+
description: "Description pour le SEO."
9+
image: "Image d'illustration de l'article qui sert ensuite dans la mise en avant : réseaux sociaux, flux RSS..."
10+
license: default
11+
robots: index, follow
12+
tags:
13+
- développement
14+
- plugin QGIS
15+
- PyQGIS
16+
- QGIS
17+
- tutoriel
18+
---
19+
20+
21+
# Quand je développe un plugin pour QGIS
22+
23+
:calendar: Date de publication initiale : 9 juin 2022
24+
25+
Lorsque je travaille sur un plugin pour QGIS, j'ai mes petites habitudes
26+
27+
[Commenter cet article :fontawesome-solid-comments:](#__comments){: .md-button }
28+
{: align=middle }
29+
30+
## Quelques prérequis
31+
32+
J'aime disposer à la fois de la version déjà publiée (le cas échéant) et celle sur laquelle je travaille actuellement.
33+
34+
### Linux
35+
36+
```bash
37+
sudo apt update
38+
sudo apt install software-properties-common
39+
```
40+
41+
1. Créer un profil QGIS dédié au dév du plugin : `qgis --profile dev_transdata`
42+
2. Personnaliser rapidement le profil :
43+
- désactiver le check de version
44+
- désactiver le fil d'actu
45+
- désactiver les éléments d'interface inutiles
46+
- désactiver les extensions inutiles
47+
3. Ajouter la variable d'environnement personnalisée qui va permettre à QGIS de trouver mon plugin :
48+
- Appliquer = `Ecraser`
49+
- Variable = `QGIS_PLUGIN_PATH`
50+
- Valeur = le chemin absolu vers mon plugin. Exemple : `/home/jmo/Git/External/transdata`
51+
4. Installer les extensions de développement :
52+
- Plugin Reloader
53+
- VS Debug
54+
5. Relancer QGIS
55+
6. Configurer le Plugin Reloader pour qu'il pointe sur notre plugin
56+
7. Installer Zeal avec les docsets PyQGIS, Qt 5 et autres si besoin (PosgreSQL, etc.)
57+
58+
## Cloner dans un dossier dédié
59+
60+
```bash
61+
git clone [email protected]:geotribu/qtribu.git plg_qtribu_dev
62+
```
63+
64+
## Créer un profil QGIS dédié
65+
66+
Pour bien compartimenter, avoir un environnement neutre, on crée un profil QGIS dédié au plugin :
67+
68+
```bash
69+
qgis --profile plg_qtribu
70+
```
71+
72+
le définir par défaut en modifiant `profiles.ini`
73+
74+
```bash
75+
sed -i "s|^defaultProfile=.*|defaultProfile=plg_qtribu|" ~/.local/share/QGIS/QGIS3/profiles/profiles.ini
76+
```
77+
78+
Ajouter le chemin du dossier via une variable d'environnement :
79+
80+
```bash
81+
sed -i '/\[qgis\]/a customEnvVars="overwrite|QGIS_PLUGINPATH=/home/jmo/Git/Oslandia/QGIS/gml_application_schema_toolbox/"\ncustomEnvVarsUse=true' ~/.local/share/QGIS/QGIS3/profiles/plg_fresh/QGIS/QGIS3.ini
82+
```
83+
84+
## Les plugins qui vont bien
85+
86+
- Plugin Reloader
87+
- Network Logger (pour QGIS < 3.14)
88+
- VS Debugger
89+
90+
## Renommer metadata.txt
91+
92+
Pour distinguer facilement de la version déployée sur le dépôt de plugins
93+
94+
----
95+
96+
## Référencer le plugin dans QGIS
97+
98+
### Ajouter le chemin du dossier en variable d'environnement QGIS
99+
100+
`QGIS_PLUGINPATH` : `vs dev`
101+
102+
![image alt](https://cdn.geotribu.fr/img/tuto/qgis_plugin_dev_setup/qgis_settings_env_var.png "title"){: .img-center loading=lazy }
103+
104+
### Autres options
105+
106+
#### Lien symbolique
107+
108+
Il est également possible d'utiliser les [liens symboliques](https://fr.wikipedia.org/wiki/Lien_symbolique) mais personnellement je n'aime pas trop cette option car :
109+
110+
- c'est trop "transparent" : je suis du genre à oublier que le plugin est référencé via ce mécanisme et si je clique sur "Désinstaller le plugin" depuis QGIS, je perds mon taf, mon setup, ma bonne humeur et ma foi dans l'humanité.
111+
- c'est certes *cross-platform* depuis que Windows 10 permet d'en créer facilement (`mklink /D "D:\Git\Link To Folder" "C:\Users\Name\Original Folder"`) mais c'est plutôt à des fins de compatibilité et ça reste quand même très imprégné de la logique Unix, loin des autres systèmes d'exploitation
112+
- le lien symbolique est référencé dans le système et j'aime pas l'encombrer pour rien (ouais, je suis du genre à n'avoir aucune icône sur mon bureau)
113+
114+
#### Via un script d'installation
115+
116+
C'est le cas qu'on trouve le plus couramment, surtout parmi les vieux ~~développeurs~~ plugins notamment ceux créés par le Plugin Builder : un bon [Makefile](https://github.com/g-sherman/plugin_build_tool/blob/master/test_plugin/Makefile) des familles avec plein de commandes pour faire des heureux
117+
118+
Sauf que :
119+
120+
- `make` c'est génial mais c'est que sur certaines distributions Linux (les principales)
121+
- un plugin QGIS, c'est un package Python ; un langage qui permet notamment de scripter alors pourquoi s'embêter à en maîtriser un autre avec sa syntaxe et ses principes plus bas niveau quand on ne rêve pas de devenir développeur ?
122+
- en vérité, même si c'est un script Python (`package.py`, `install.py`, etc.), j'ai la flemme de le lancer à chaque fois que j'ai besoin de voir le résultat dans QGIS et surtout de le maintenir
123+
124+
![Sweat Partisan du Moindre Effort](https://heroinesministries.files.wordpress.com/2017/12/img_0487.jpg "Sweat Partisan du Moindre Effort")
125+
126+
----
127+
128+
## Un seul script
129+
130+
![logo Partisans du Moindre Effort](https://cdn.geotribu.fr/img/logos-icones/divers/partisan_moindre_effort.webp "logo Partisans du Moindre Effort"){: .img-rdp-news-thumb }
131+
132+
Sur Ubuntu, avec Git et QGIS d'installés, ça donne :
133+
134+
```bash
135+
# télécharger le script dans le dossier que vous voulez
136+
git clone https://gist.github.com/bc7d883922676ab14f857ed951b3a583.git dev_plugin_qgis
137+
cd dev_plugin_qgis
138+
139+
# autoriser l'exécution du script
140+
chmod +x dev_qgis_plugin_setup.sh
141+
142+
# lancer le script en lui passant le dépôt de code distant et le dossier local - adapter à votre goût
143+
./dev_qgis_plugin_setup.sh https://github.com/geotribu/qtribu.git ~/Git/QGIS/qtribu
144+
```
145+
146+
[Voir le script :fontawesome-regular-file-code:](https://gist.github.com/Guts/bc7d883922676ab14f857ed951b3a583){: .md-button }
147+
{: align=middle }
148+
149+
Merci à mon collègue [Loïc Bartoletti](/team/lbar/) pour l'interopérabilité BSD.
150+
151+
----
152+
153+
----
154+
155+
## Ailleurs sur le web
156+
157+
- le [guide de développement de plugin de GIS OPS](https://gis-ops.com/qgis-3-plugin-tutorial-plugin-development-reference-guide/)
158+
159+
----
160+
161+
## Auteur {: data-search-exclude }
162+
163+
--8<-- "content/team/jmou.md"
164+
165+
{% include "licenses/default.md" %}

0 commit comments

Comments
 (0)