Ce que tu vas apprendre
Interpréteur venv
Pointer l'IDE vers le bon Python pour l'autocomplétion et les imports Odoo.
Debug pas à pas
Poser des breakpoints et inspecter les variables en temps réel dans le code Odoo.
Mode --dev=all
Recharger le code Python et les assets automatiquement sans redémarrer Odoo.
Productivité
Extensions, raccourcis et astuces pour gagner du temps au quotidien.
- Odoo 19 installé depuis les sources (article T01 ou T02 de cette série)
- VS Code (code.visualstudio.com) ou PyCharm Community/Professional (jetbrains.com)
- L'environnement virtuel Python créé lors de l'installation
Cet article couvre les deux IDE les plus populaires pour le développement Odoo. Choisis celui que tu préfères — les deux font le travail. VS Code est gratuit et léger, PyCharm Professional offre un debugger plus avancé et un support SQL intégré.
Le workflow de développement Odoo
L'IDE lance odoo-bin en mode debug. Tu poses des breakpoints,
modifies le code, sauvegardes — et Odoo recharge automatiquement.
L'IDE pilote odoo-bin via le debugger Python. Le mode --dev=all recharge le code sans redémarrage.
Partie 1 — VS Code
1.1 — Ouvrir le projet et configurer l'interpréteur Python
Ouvre le dossier racine de ton installation Odoo dans VS Code :
# Linux
code /opt/odoo19
# Windows
code C:\odoo19
Configure l'interpréteur Python du venv :
- Appuie sur Ctrl+Shift+P (ou Cmd+Shift+P sur Mac)
- Tape Python: Select Interpreter
- Sélectionne le Python du venv :
- Linux :
/opt/odoo19/venv/bin/python3 - Windows :
C:\odoo19\venv\Scripts\python.exe
- Linux :
from odoo import models, fields) et l'autocomplétion
ne fonctionnera pas. Le venv contient toutes les dépendances Odoo.
1.2 — Extensions recommandées
Installe ces extensions pour une expérience optimale :
| Extension | ID | Rôle |
|---|---|---|
| Python | ms-python.python | Autocomplétion, linting, debugger |
| Pylance | ms-python.vscode-pylance | Analyse de type avancée, go-to-definition |
| XML | redhat.vscode-xml | Validation et formatage des vues XML Odoo |
| Odoo Snippets | mstuttgart.odoo-snippets | Snippets pour modèles, vues, actions Odoo |
Installation rapide en une commande :
code --install-extension ms-python.python \
--install-extension ms-python.vscode-pylance \
--install-extension redhat.vscode-xml \
--install-extension mstuttgart.odoo-snippets
1.3 — Configurer le debugger (launch.json)
C'est le fichier le plus important. Il dit à VS Code comment lancer odoo-bin avec le debugger Python.
Crée le fichier .vscode/launch.json à la racine de ton projet :
{
"version": "0.2.0",
"configurations": [
{
"name": "Odoo 19 — Debug",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/odoo/odoo-bin",
"args": [
"-c", "${workspaceFolder}/odoo.conf",
"--dev=all"
],
"python": "${workspaceFolder}/venv/bin/python3",
"console": "integratedTerminal",
"justMyCode": false
},
{
"name": "Odoo 19 — Update Module",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/odoo/odoo-bin",
"args": [
"-c", "${workspaceFolder}/odoo.conf",
"-u", "mon_module",
"-d", "odoo19_dev",
"--stop-after-init",
"--dev=all"
],
"python": "${workspaceFolder}/venv/bin/python3",
"console": "integratedTerminal",
"justMyCode": false
}
]
}
"type": "debugpy"— le debugger Python officiel de Microsoft (remplace l'ancien"type": "python")."justMyCode": false— permet de poser des breakpoints dans le code source Odoo lui-même, pas seulement dans tes modules. Indispensable pour comprendre le framework."--dev=all"— active le rechargement automatique du code Python et la recompilation des assets (JS, CSS, QWeb).- La config Update Module est pratique pour debugger l'installation ou la mise à jour d'un module spécifique.
"python": "${workspaceFolder}/venv/Scripts/python.exe"
1.4 — Configurer Pylance pour Odoo (settings.json)
Par défaut, Pylance ne trouve pas les modules Odoo et affiche des erreurs
import "odoo" could not be resolved. Corrige ça avec
.vscode/settings.json :
{
"python.defaultInterpreterPath": "${workspaceFolder}/venv/bin/python3",
"python.analysis.extraPaths": [
"${workspaceFolder}/odoo",
"${workspaceFolder}/odoo/addons",
"${workspaceFolder}/custom-addons"
],
"python.analysis.diagnosticSeverityOverrides": {
"reportMissingImports": "warning"
},
"files.associations": {
"*.xml": "xml"
},
"[python]": {
"editor.rulers": [120]
}
}
python.analysis.extraPaths— indique à Pylance où chercher les modules Odoo. Sans ça, tous lesfrom odoo import ...sont soulignés en rouge.reportMissingImports: "warning"— réduit le bruit des faux positifs (certains imports Odoo dynamiques ne sont pas détectables statiquement).editor.rulers: [120]— Odoo utilise une largeur de ligne de 120 caractères.
1.5 — Premier debug
Tout est prêt. Teste le debugger :
- Ouvre un fichier Python d'un module Odoo (ex :
odoo/addons/sale/models/sale_order.py) - Clique dans la marge à gauche d'une ligne pour poser un breakpoint (point rouge)
- Appuie sur F5 ou va dans Run → Start Debugging
- Sélectionne la configuration Odoo 19 — Debug
- Odoo démarre dans le terminal intégré. Ouvre
http://localhost:8069 - Déclenche l'action qui passe par ta ligne (ex : crée un devis de vente)
- L'exécution s'arrête au breakpoint. Inspecte les variables dans le panneau latéral.
- F5 — Lancer / Continuer
- F10 — Step Over (ligne suivante)
- F11 — Step Into (entrer dans la fonction)
- Shift+F11 — Step Out (sortir de la fonction)
- Shift+F5 — Arrêter le debug
Partie 2 — PyCharm
2.1 — Ouvrir le projet et configurer l'interpréteur
Ouvre le dossier racine Odoo dans PyCharm (File → Open).
Configure l'interpréteur Python du venv :
- File → Settings (ou Ctrl+Alt+S)
- Project: odoo19 → Python Interpreter
- Clique sur la roue crantée → Add Interpreter → Existing
- Sélectionne :
- Linux :
/opt/odoo19/venv/bin/python3 - Windows :
C:\odoo19\venv\Scripts\python.exe
- Linux :
- Clique OK
PyCharm indexe automatiquement tous les packages du venv. L'autocomplétion
from odoo import models, fields, api fonctionne immédiatement.
2.2 — Ajouter les sources Odoo et les modules custom
Pour que PyCharm navigue correctement dans le code Odoo, marque les dossiers comme Sources Root :
- File → Settings → Project: odoo19 → Project Structure
- Sélectionne le dossier
odoo/(les sources Odoo) → clique Sources - Sélectionne
odoo/addons/→ clique Sources - Sélectionne
custom-addons/→ clique Sources - Clique OK
from odoo.addons.sale.models import sale_order).
En marquant les dossiers comme Sources Root, l'IDE indexe tous les modules.
2.3 — Configurer le Run/Debug (Run Configuration)
Crée une configuration de lancement pour odoo-bin :
- Run → Edit Configurations → + → Python
- Configure :
- Name :
Odoo 19 — Debug - Script :
/opt/odoo19/odoo/odoo-bin(Windows :C:\odoo19\odoo\odoo-bin) - Parameters :
-c /opt/odoo19/odoo.conf --dev=all - Python interpreter : le venv configuré à l'étape 2.1
- Working directory :
/opt/odoo19
- Name :
- Clique OK
Crée une deuxième configuration pour la mise à jour de modules :
- Name :
Odoo 19 — Update Module - Parameters :
-c /opt/odoo19/odoo.conf -u mon_module -d odoo19_dev --stop-after-init --dev=all
2.4 — Activer le Database Tool (PyCharm Professional)
Si tu as PyCharm Professional, connecte-toi directement à PostgreSQL :
- Ouvre le panneau Database (barre latérale droite)
- + → Data Source → PostgreSQL
- Configure :
- Host :
localhost - Port :
5432 - User :
odoo19 - Password :
odoo19(Windows) ou vide (Linux peer auth) - Database :
odoo19_dev
- Host :
- Clique Test Connection puis OK
Tu peux maintenant explorer les tables Odoo, exécuter des requêtes SQL et inspecter les données directement depuis l'IDE — sans quitter PyCharm.
Partie 3 — Mode développeur et astuces
3.1 — Le mode --dev=all expliqué
L'option --dev=all est indispensable en développement. Voici ce qu'elle active :
| Option | Effet |
|---|---|
--dev=reload | Redémarre automatiquement odoo-bin quand un fichier .py est modifié |
--dev=qweb | Recompile les templates QWeb à chaque requête (pas de cache) |
--dev=xml | Relit les fichiers XML de données à chaque mise à jour |
--dev=all | Active tout : reload + qweb + xml |
--dev=all ralentit Odoo
car il désactive les caches. C'est normal — ne l'utilise jamais en production.
Tu peux aussi l'ajouter dans odoo.conf pour ne pas le taper
à chaque lancement :
[options]
; ... tes autres paramètres ...
dev_mode = all
3.2 — Astuces de productivité
Naviguer dans le code Odoo
- Ctrl+Click sur un nom de modèle (
sale.order) pour aller à sa définition Python - Ctrl+Shift+F — Rechercher dans tous les fichiers du projet
(utile pour trouver une vue XML par son
id) - Ctrl+P (VS Code) / Shift+Shift (PyCharm) — Ouvrir un fichier par son nom
Astuces debug
- Conditional breakpoint — Clic droit sur un breakpoint pour ajouter
une condition (ex :
self.id == 42). Indispensable quand une méthode est appelée pour des centaines d'enregistrements. - Log point — Comme un
print()mais sans modifier le code. Clic droit sur la marge → Log Message. - Watch expressions — Ajoute
self.env.user.nameouself.statedans le panneau Watch pour les voir évoluer en temps réel.
La console Python debug (VS Code)
Quand le debugger est en pause sur un breakpoint, ouvre la Debug Console et tape des expressions Python directement :
# Dans la Debug Console (pendant un breakpoint)
self.env['res.partner'].search_count([])
self.order_line.mapped('product_id.name')
self.env.cr.execute("SELECT id, name FROM sale_order LIMIT 5")
self.env.cr.fetchall()
3.3 — VS Code vs PyCharm pour Odoo
| VS Code | PyCharm Community | PyCharm Pro | |
|---|---|---|---|
| Prix | Gratuit | Gratuit | Payant (~199$/an) |
| Démarrage | Rapide (~2s) | Lent (~10s) | Lent (~10s) |
| Autocomplétion Odoo | Bon (Pylance) | Bon | Excellent |
| Debugger | Bon (debugpy) | Bon | Excellent (évaluation inline) |
| SQL intégré | Via extension | Non | Oui (Database Tool) |
| Refactoring | Basique | Bon | Excellent |
| RAM | ~400 Mo | ~1 Go | ~1.5 Go |
Recommandation : commence avec VS Code si tu débutes. Passe à PyCharm Professional si tu travailles sur Odoo quotidiennement et que le budget le permet — le debugger et le Database Tool font une vraie différence sur les projets complexes.
Dépannage
| Problème | Solution |
|---|---|
import "odoo" could not be resolved |
Ajoute le dossier odoo/ dans python.analysis.extraPaths (VS Code) ou marque-le comme Sources Root (PyCharm) |
| Breakpoints ignorés (code Odoo) | Mets "justMyCode": false dans launch.json (VS Code)
ou décoche Only show my code dans PyCharm debug settings |
| Le rechargement auto ne fonctionne pas | Vérifie que --dev=all est dans les arguments. Le rechargement
nécessite aussi watchdog : pip install watchdog |
| PyCharm est très lent à indexer | Exclue les dossiers volumineux : clic droit sur odoo/odoo/addons/
→ Mark Directory as → Excluded pour les modules que tu ne modifies pas |
| Les templates XML changés ne se rafraîchissent pas | Avec --dev=all, fais un hard refresh dans le navigateur
(Ctrl+Shift+R) pour vider le cache JS/CSS |
Récapitulatif
| Configuration | VS Code | PyCharm |
|---|---|---|
| Interpréteur | Python: Select Interpreter → venv | Settings → Python Interpreter → venv |
| Sources Odoo | python.analysis.extraPaths | Project Structure → Sources Root |
| Debug config | .vscode/launch.json | Run/Debug Configurations |
| Debug Odoo interne | "justMyCode": false | Décocher Only show my code |
| Mode dev | --dev=all dans les arguments | |
Pour aller plus loin
- Odoo Shell : lance
odoo-bin shell -d ma_basepour un REPL Python interactif avec accès complet à l'ORM - Tests :
odoo-bin -i mon_module --test-enable -d test_db --stop-after-init - Profiling : active le mode développeur dans Odoo, puis Paramètres → Technique → Profiling pour analyser les performances
Liens utiles
Télécharge le Guide Technique Odoo 19
Architecture, pièges v19, checklist premier module — tout dans un PDF gratuit.
Télécharger le guide← Installer avec Docker Article suivant de la série : Première approche du développement →