Corriger « ModuleNotFoundError: No module named 'pcbnew' » avec KiCad

Publié le 17 octobre 2026 par leZ

Pourquoi import pcbnew échoue hors de KiCad, et 4 solutions testées sous KiCad 10 : Python de KiCad, invite de commandes KiCad, venv, API IPC.

Votre script fonctionne parfaitement dans la console de scripts de KiCad, mais dès que vous le lancez depuis un terminal ou depuis VS Code, Python s’arrête net sur la première ligne :

Terminal affichant ModuleNotFoundError: No module named 'pcbnew' lors d'un import pcbnew avec le Python du système (3.13)
import pcbnew avec le Python du système : ModuleNotFoundError.

Toutes les solutions ci-dessous ont été testées sous Windows avec KiCad 10.0 (Python 3.11.5 intégré), avec exactement les commandes visibles sur les captures.

Pourquoi import pcbnew échoue

pcbnew n’est pas un paquet pip ordinaire. C’est un module natif compilé avec KiCad (un fichier pcbnew.py et une bibliothèque compilée _pcbnew), installé dans le dossier de KiCad — sous Windows dans C:\Program Files\KiCad\10.0\bin\Lib\site-packages. Il est compilé pour une seule version de Python : celle fournie avec KiCad.

Le Python de votre système (ici 3.13) ne cherche pas dans ce dossier, d’où No module named 'pcbnew'. Inutile non plus de tenter pip install pcbnew : aucun paquet PyPI ne donne accès à l’API de KiCad, le module n’existe qu’avec une installation de KiCad.

Solution 1 : lancer le script avec le Python fourni avec KiCad

La solution la plus fiable : appeler explicitement l’interpréteur de KiCad.

"C:\Program Files\KiCad\10.0\bin\python.exe" mon_script.py
Le même script lancé avec le python.exe fourni avec KiCad (Python 3.11.5) charge la board et affiche la version de KiCad
Avec C:\Program Files\KiCad\10.0\bin\python.exe, import pcbnew fonctionne.

L’interpréteur équivalent sur les autres systèmes (emplacements d’installation standard, non testés sur cette machine) :

Solution 2 (Windows) : ouvrir l’« invite de commandes KiCad »

KiCad installe dans le menu Démarrer un raccourci nommé KiCad 10.0 Command Prompt. Il ouvre un terminal où le dossier bin de KiCad passe en premier dans le PATH : les commandes python et pip visent alors l’installation de KiCad, sans rien taper en entier.

KiCad 10.0 Command Prompt sous Windows : python --version renvoie Python 3.11.5, l'interpréteur de KiCad, et le script pcbnew s'exécute
Dans la KiCad Command Prompt, python désigne le Python 3.11.5 de KiCad.

Pratique pour installer un paquet supplémentaire pour vos scripts : pip install ... depuis cette invite l’installe pour le Python de KiCad, pas pour celui du système.

Piège : ajouter le dossier de KiCad au sys.path d’un autre Python

Le raccourci tentant — sys.path.append(r"C:\Program Files\KiCad\10.0\bin\Lib\site-packages") depuis votre Python habituel — remplace l’erreur par une autre :

ImportError: DLL load failed while importing _pcbnew quand le site-packages de KiCad est ajouté au sys.path depuis Python 3.13
pcbnew.py est trouvé, mais la bibliothèque compilée _pcbnew est prévue pour le Python 3.11 de KiCad, pas pour 3.13.

pcbnew.py est bien trouvé, mais la partie compilée _pcbnew ne se charge que dans la version de Python pour laquelle elle a été construite. Même version de Python que KiCad, ou rien.

Solution 3 : un venv qui voit pcbnew

Vous voulez un environnement virtuel pour vos dépendances ? Créez-le à partir du Python de KiCad avec l’option --system-site-packages, sinon le venv est isolé et ne voit pas non plus pcbnew :

"C:\Program Files\KiCad\10.0\bin\python.exe" -m venv --system-site-packages venv-kicad
venv-kicad\Scripts\python mon_script.py
Comparaison de deux venv créés depuis le Python de KiCad : sans --system-site-packages pcbnew est introuvable, avec l'option import pcbnew fonctionne
venv isolé : pcbnew introuvable. Avec --system-site-packages : pcbnew disponible.

Dans VS Code, sélectionnez ensuite ce venv (ou directement le python.exe de KiCad) avec Python: Select Interpreter, pour que le bouton Exécuter et l’autocomplétion utilisent le bon interpréteur.

Solution 4 : passer à l’API IPC, compatible avec n’importe quel Python

Depuis KiCad 9, l’API IPC offre une autre voie : son client Python, kipy, est un paquet pip classique (pip install kicad-python) qui dialogue avec un KiCad ouvert via un socket. Plus besoin du Python de KiCad — mais KiCad doit être lancé avec l’API activée. La mise en place et les différences avec pcbnew sont détaillées dans le tutoriel d’installation.

Récapitulatif

Situation Solution
ModuleNotFoundError dans un terminal Lancer le script avec C:\Program Files\KiCad\10.0\bin\python.exe
Windows, commandes python/pip Ouvrir KiCad 10.0 Command Prompt
DLL load failed while importing _pcbnew Mauvaise version de Python : utiliser celle de KiCad, ne pas bricoler sys.path
Environnement virtuel venv --system-site-packages, créé depuis le Python de KiCad
Vous préférez votre propre Python API IPC (pip install kicad-python)