Skip to content

Commit

Permalink
[Article] Créer un environnement virtuel Python pour le développement…
Browse files Browse the repository at this point in the history
… de plugin QGIS avec VSCode sous Windows (#1216)

----

:information_source: Message automatique à lire et remplir :arrow_down: 

## Liens importants

- pour modifier ton article via l'interface de GitHub, tu peux le
retrouver facilement via l'icône crayon en haut de la page sur le site
de prévisualisation ([cf.
documentation](https://contribuer.geotribu.fr/edit/fix_content_from_website/)).
Sinon :
-
[article](https://github.com/nicogodet/website/edit/article-pyqgis-venv-win-vscode/content/articles/2024/2024-10-XX_pyqgis_environnement_dev_windows.md?pr=%2Fgeotribu%2Fwebsite%2Fpull%2F1216)
- [page
auteur/ice](https://github.com/nicogodet/website/edit/article-pyqgis-venv-win-vscode/content/team/nicolas-godet.md?pr=%2Fgeotribu%2Fwebsite%2Fpull%2F1216)
- le dossier dédié pour les illustrations de l'article sur notre
"[CDN](https://contribuer.geotribu.fr/guides/cdn-images-hebergement/)" :
<https://cdn.geotribu.fr/tinyfilemanager.php?p=articles-blog-rdp%2Farticles%2F2024%2Fpyqgis_environnement_dev_windows>.
Si besoin des accès, contacter en message privé (Mastodon, mail,
Slack,...)
- [site temporaire de prévisualisation de
l'article](https://preview-pullrequest-1216--geotribu-preprod.netlify.app/)
- merci de ne pas le diffuser

## Ressources

Pour info, voici quelques extraits de notre guide de contribution :

- [comprendre et compléter
l'en-tête](https://contribuer.geotribu.fr/guides/metadata_yaml_frontmatter/)
- [intégrer une image](https://contribuer.geotribu.fr/guides/image/)
- [choisir une
licence](https://contribuer.geotribu.fr/guides/licensing/)
- [signer un article](https://contribuer.geotribu.fr/guides/authoring/)

## 📢 Diffusion

Une fois l'article publié, il sera alors temps de le diffuser. Il sera
automatiquement intégré au [flux
RSS](http://geotribu.fr/feed_rss_created.xml) et à [la
newsletter](http://geotribu.fr/newsletter/signup/).

Mais la publication sur les réseaux sociaux est manuelle.

Nous avons des comptes officiels sur ces réseaux sociaux :

- [BlueSky](https://bsky.app/profile/geotribu.bsky.social)
- ~~[Facebook](https://www.facebook.com/geotribu) - inactif~~
- [LinkedIn](https://www.linkedin.com/company/geotribu/) avec [le
hashtag
#Geotribu](https://www.linkedin.com/feed/hashtag/?keywords=geotribu)
- [Mastodon](https://mapstodon.space/@geotribu)
- [X/Twitter](https://twitter.com/geotribu)

Merci d'indiquer en commentaire tes comptes à utiliser pour être cité/e
dans les messages et de cocher ci-après la "stratégie" de diffusion qui
te convient pour chaque réseau.

### BlueSky

- [x] un/e membre de Geotribu publie, tu repartages avec ton compte
- [ ] tu publies, on repartage
- [ ] chacun/e publie de son côté
- [ ] je souhaite que mon contenu ne soit pas diffusé sur ce réseau

### LinkedIn

- [x] un/e membre de Geotribu publie, tu repartages avec ton compte
- [ ] tu publies, on repartage
- [ ] chacun/e publie de son côté
- [ ] je souhaite que mon contenu ne soit pas diffusé sur ce réseau

### Mastodon

- [x] un/e membre de Geotribu publie, tu repartages avec ton compte
- [ ] tu publies, on repartage
- [ ] chacun/e publie de son côté
- [ ] je souhaite que mon contenu ne soit pas diffusé sur ce réseau

### X/Twitter

- [x] un/e membre de Geotribu publie, tu repartages avec ton compte
- [ ] tu publies, on repartage
- [ ] chacun/e publie de son côté
- [ ] je souhaite que mon contenu ne soit pas diffusé sur ce réseau
  • Loading branch information
Guts authored Nov 25, 2024
2 parents 35a42ca + e46f37e commit 51dcd91
Show file tree
Hide file tree
Showing 2 changed files with 147 additions and 0 deletions.
117 changes: 117 additions & 0 deletions content/articles/2024/2024-11-25_pyqgis_environnement_dev_windows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
title: "Créer un environnement virtuel Python pour le développement de plugin QGIS avec VS Code sous Windows"
subtitle: Protégeons notre environnement, pour nos enfants PyQGIS
authors:
- Nicolas Godet
categories:
- article
comments: true
date: 2024-11-25
description: "Pour le bonheur d'Intellisense"
icon: material/microsoft-visual-studio-code
image:
license: beerware
robots: index, follow
tags:
- Plugin QGIS
- PyQGIS
- Python
- VS Code
- Windows
---

# Créer un environnement virtuel Python pour le développement de plugin QGIS avec VS Code sous Windows

:calendar: Date de publication initiale : {{ page.meta.date | date_localized }}

## Introduction

![logo PyQGIS](https://cdn.geotribu.fr/img/logos-icones/programmation/pyqgis.png){: .img-thumbnail-left }

Tout ceux qui s'y sont frottés le savent, configurer son environnement Python, PyQGIS et PyQt sous Windows pour développer des plugins pour QGIS est un réel parcours du combattant. À la fin, on est souvent perdant...

Et bien, plus maintenant ! Après avoir fouillé les archives d'internet et exploré les pistes fournies par [Julien](../../team/julien-moura.md), voici l'une des méthodes permettant d'avoir toutes (ou presque) les autocomplétions d'objets et méthodes PyQGIS, PyQt, etc. dans VS Code.

<!-- more -->

[Commenter cet article :fontawesome-solid-comments:](#__comments "Aller aux commentaires"){: .md-button }
{: align=middle }

----

## Création de l'environnement virtuel

Je suppose dans la suite que vous avez installé QGIS dans le répertoire `C:\OSGeo4W` (la procédure est identique que QGIS soit installé via l'installateur réseau OSGeo4W ou via le package MSI, les chemins indiqués dans la suite de l'article sont simplement à adapter selon votre installation).

1. Ouvrir une console OSGeo4W Shell et naviguer jusqu'à l'emplacement où vous souhaitez créer l'environnement virtuel.
Par exemple, un template de plugin fraîchement créé via l'outil [QGIS Plugin Templater](https://gitlab.com/Oslandia/qgis/template-qgis-plugin).

1. Exécuter les commandes suivantes :

```cmd title="Création d'un environnement virtuel dans l'OSGeo4W Shell"
C:\OSGeo4W\bin\python-qgis.bat -m venv --system-site-packages .venv
C:\OSGeo4W\bin\python-qgis.bat -c "import pathlib;import qgis;print(str((pathlib.Path(qgis.__file__)/'../..').resolve()))" > .venv\qgis.pth
```
L'option `--system-site-packages` permet à l'environnement virtuel créé d'hériter des librairies spécifiques à l'environnement Python dans QGIS.
1. Pour que VSCode reconnaisse les imports `processing`, ajouter la ligne suivante dans le fichier `.venv\qgis.pth` :
`C:\OSGeo4W\apps\qgis\python\plugins`
Votre fichier devrait ressembler à ça :
```text title="Contenu du fichier .venv\qgis.pth"
C:\OSGeo4W\apps\qgis\python
C:\OSGeo4W\apps\qgis\python\plugins
```
Veiller à ce que l'encodage du fichier `.venv\qgis.pth` soit bien en UTF-8.
1. Créer le fichier `sitecustomize.py` dans le dossier `.venv\Lib\site-packages` avec le contenu suivant :
```python title=".venv\Lib\site-packages\sitecustomize.py"
import os
os.add_dll_directory("C:/OSGeo4W/bin")
os.add_dll_directory("C:/OSGeo4W/apps/qgis/bin")
os.add_dll_directory("C:/OSGeo4W/apps/Qt5/bin")
```
1. Dans le fichier `.venv\pyvenv.cfg`, modifier les occurences `C:\OSGeo4W\bin` en `C:\OSGeo4W\apps\Python312` :
```ini title=".venv\pyenv.cfg"
home = C:\OSGeo4W\apps\Python312
include-system-site-packages = true
version = 3.12.6
executable = C:\OSGeo4W\apps\Python312\python.exe
command = C:\OSGeo4W\apps\Python312\python.exe -m venv --system-site-packages <Le chemin complet vers votre venv>
```
----
## Dans VS Code
Si vous ouvrez VS Code dans le dossier où vous venez de créer l'environnement virtuel, VS Code détectera automatiquement l'environnement (sinon installer [l'extension VS Code Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)) et lorsque vous taperez des bouts de code, VS Code vous proposera les objets ou méthodes PyQGIS.
![Complétion des imports](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/pyqgis_environnement_dev_windows/vscode_intellisense_completion_imports.webp){: .img-center loading=lazy }
![Complétion des méthodes](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/pyqgis_environnement_dev_windows/vscode_intellisense_completion_methodes.webp){: .img-center loading=lazy }
Pour également avoir l'ensemble des complétions associées à PyQt, il semble être nécessaire d'installer une librairie Python supplémentaire `PyQt5-stubs` (certes qui n'est plus maintenue mais qui a le mérite de fonctionner).
Dans le terminal VS Code, exécuter la commande :
```powershell title="Installer la complétion PyQT dans l'environnement virtuel"
pip install PyQt5-stubs
```

![PyQt](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/pyqgis_environnement_dev_windows/vscode_pyqt.webp){: .img-center loading=lazy }

Tout ça pour avoir un code coloré :smiley: !

![Contribuez GeoPF Altimétrie](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/pyqgis_environnement_dev_windows/vscode_geopf.webp){: .img-center loading=lazy }

----

<!-- geotribu:authors-block -->

{% include "licenses/beerware.md" %}
30 changes: 30 additions & 0 deletions content/team/nicolas-godet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: Nicolas Godet
categories:
- contributeur
social:
- bluesky:
- github: nicogodet
- gitlab: nicogodet
- linkedin:
- mail:
- mastodon:
- instance:
- username:
- openstreetmap:
- osgeo:
- twitter:
- website:
---

# Nicolas Godet

<!-- --8<-- [start:author-sign-block] -->

![Portrait Nicolas Godet](https://cdn.geotribu.fr/img/internal/contributeurs/ngo.webp "Portrait Nicolas Godet"){: .img-thumbnail-left }

Ingénieur hydraulicien de formation, les SIG et QGIS font parti de mon quotidien tout comme les équations de Navier-Stockes, fameuses équations aux dérivées partielles non linéaires qui décrivent le mouvement des fluides newtoniens.

Esprit bidouilleur, je me suis rapidement tourné vers Python et PyQGIS pour le développement de scripts métier d'automatisation de traitement de résultats de modèle numérique puis le développement et maintien de plugins QGIS.

<!-- --8<-- [end:author-sign-block] -->

0 comments on commit 51dcd91

Please sign in to comment.