Se rendre au contenu

Configurer l'environnement de développement Odoo 19

Bloc 2 · Environnement dev — Article 1/4 Configurer l'environnement de développement Odoo 19 Un IDE bien configuré, c'est la différence entre deviner et…
26 avril 2026 par
Configurer l'environnement de développement Odoo 19
B.Mustapha

Bloc 2 · Environnement dev — Article 1/4

Configurer l'environnement de développement Odoo 19

Un IDE bien configuré, c'est la différence entre deviner et comprendre. On paramètre VS Code et PyCharm pour qu'ils connaissent l'ORM Odoo, posent des breakpoints et rechargent le code automatiquement.

~16 minutes de lecture

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.

Prérequis
  • 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.

Workflow de développement Odoo 19 : IDE, odoo-bin, PostgreSQL et navigateur

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 :

  1. Appuie sur Ctrl+Shift+P (ou Cmd+Shift+P sur Mac)
  2. Tape Python: Select Interpreter
  3. Sélectionne le Python du venv :
    • Linux : /opt/odoo19/venv/bin/python3
    • Windows : C:\odoo19\venv\Scripts\python.exe
Pourquoi c'est important ? Sans le bon interpréteur, VS Code ne résoudra pas les imports Odoo (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
Pythonms-python.pythonAutocomplétion, linting, debugger
Pylancems-python.vscode-pylanceAnalyse de type avancée, go-to-definition
XMLredhat.vscode-xmlValidation et formatage des vues XML Odoo
Odoo Snippetsmstuttgart.odoo-snippetsSnippets 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
        }
    ]
}
Paramètres clés
  • "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.
Windows ? Remplace le chemin Python par : "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]
    }
}
Explication
  • python.analysis.extraPaths — indique à Pylance où chercher les modules Odoo. Sans ça, tous les from 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 :

  1. Ouvre un fichier Python d'un module Odoo (ex : odoo/addons/sale/models/sale_order.py)
  2. Clique dans la marge à gauche d'une ligne pour poser un breakpoint (point rouge)
  3. Appuie sur F5 ou va dans Run → Start Debugging
  4. Sélectionne la configuration Odoo 19 — Debug
  5. Odoo démarre dans le terminal intégré. Ouvre http://localhost:8069
  6. Déclenche l'action qui passe par ta ligne (ex : crée un devis de vente)
  7. L'exécution s'arrête au breakpoint. Inspecte les variables dans le panneau latéral.
Raccourcis debug essentiels
  • 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 :

  1. File → Settings (ou Ctrl+Alt+S)
  2. Project: odoo19 → Python Interpreter
  3. Clique sur la roue crantée → Add Interpreter → Existing
  4. Sélectionne :
    • Linux : /opt/odoo19/venv/bin/python3
    • Windows : C:\odoo19\venv\Scripts\python.exe
  5. 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 :

  1. File → Settings → Project: odoo19 → Project Structure
  2. Sélectionne le dossier odoo/ (les sources Odoo) → clique Sources
  3. Sélectionne odoo/addons/ → clique Sources
  4. Sélectionne custom-addons/ → clique Sources
  5. Clique OK
Pourquoi ? Sans cette config, PyCharm ne résout pas les imports inter-modules (ex : 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 :

  1. Run → Edit Configurations → + → Python
  2. 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
  3. Clique OK

Crée une deuxième configuration pour la mise à jour de modules :

  1. Name : Odoo 19 — Update Module
  2. Parameters : -c /opt/odoo19/odoo.conf -u mon_module -d odoo19_dev --stop-after-init --dev=all
RaccourciShift+F9 lance le debug, Shift+F10 lance sans debug (plus rapide pour les tests).

2.4 — Activer le Database Tool (PyCharm Professional)

Si tu as PyCharm Professional, connecte-toi directement à PostgreSQL :

  1. Ouvre le panneau Database (barre latérale droite)
  2. + → Data Source → PostgreSQL
  3. Configure :
    • Host : localhost
    • Port : 5432
    • User : odoo19
    • Password : odoo19 (Windows) ou vide (Linux peer auth)
    • Database : odoo19_dev
  4. 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=reloadRedémarre automatiquement odoo-bin quand un fichier .py est modifié
--dev=qwebRecompile les templates QWeb à chaque requête (pas de cache)
--dev=xmlRelit les fichiers XML de données à chaque mise à jour
--dev=allActive tout : reload + qweb + xml
Impact sur les performances — Le mode --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.name ou self.state dans 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
PrixGratuitGratuitPayant (~199$/an)
DémarrageRapide (~2s)Lent (~10s)Lent (~10s)
Autocomplétion OdooBon (Pylance)BonExcellent
DebuggerBon (debugpy)BonExcellent (évaluation inline)
SQL intégréVia extensionNonOui (Database Tool)
RefactoringBasiqueBonExcellent
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éteurPython: Select Interpreter → venvSettings → Python Interpreter → venv
Sources Odoopython.analysis.extraPathsProject Structure → Sources Root
Debug config.vscode/launch.jsonRun/Debug Configurations
Debug Odoo interne"justMyCode": falseDécocher Only show my code
Mode dev--dev=all dans les arguments

Pour aller plus loin

  • Odoo Shell : lance odoo-bin shell -d ma_base pour 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 Odoo 19 avec Docker
Bloc 1 · Installation — Article 3/3 Installer Odoo 19 avec Docker Odoo 19 opérationnel en 5 minutes, sans installer Python ni PostgreSQL sur ta machine.