ModuleNotFoundError : No module named smbus2.
Bonjour,
Dans le cadre d'un projet j'ai besoin de communiqué en i2c entre une jetson nano et un arduino.
J'ai installé smbus, mais ModuleNotFoundError : No module named smbus. J'ai vu que smbus ne fonctionne pas sur python 3.7 donc j'ai installé smbus2.
J'ai installé le package smbus2 de plusieurs méthodes : sudo pip ... , sudo apt. Toutefois, lorsque j'appelle import smbus2 ou from smbus2 import SMBus, j'obtiens ModuleNotFoundError : No module named smbus2.
Sauriez vous ce que j'ai mal fait ?
Windows / Edge 108.0.1462.46
5 réponses
-
Bonjour,
- Dans quel dossier est installé le module smbus2 ?
- Ce dossier est-il référencé parmi ceux listés dans :
import sys print(sys.path)
- En particulier, si tu as plusieurs versions de python et/ou que tu utilises des venv, assure-toi que le pip et le python utilisés sont cohérents (par exemple; si pip installe des modules pour python3.9 mais que dans les faits tu utilises python3.8, alors python3.8 ne trouvera pas le module que tu auras installé).
Bonne chance
-
Bonsoir, es-tu certain que ce module s'est correctement installé ?
Que donne :
pip3 show smbus2
et
apt show smbus
As-tu plusieurs version de python3 sur ton poste ?
-
Bonjour,
Tu peux préciser pour une version spécifique de python utiliser pip comme expliqué ici. Par exemple pour installer smbus en python3.9 :
python3.9 -m pip install smbus
Bonne chance
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Plutôt que faire une capture d'écran peu pratique pour tout le monde et peu écologique, peux-tu plutôt copier coller le contenu du terminal la prochaine fois ?
En l'occurrence il faut comparer le dossier dans est installé ton module :
ls /home/smartbin/meta-tf2/lib/python3.7/site-packages... avec les chemins listés dans ton programme par :
import sys print(sys.path)
Peux-tu reporter le résultat du ls et du script ci-dessus ?
J'ai l'impression que tu utilises un venv (virtual environment) dans ton IDE et que tu es sous Ubuntu.
Il y a deux écoles :
- soit ton projet est configuré dans un venv et ses dépendances doivent être installés dans ce venv
- dans ce cas, les modules sont installés depuis le terminal dans le venv de ton projet (et mis à disposition par ton IDE) et dans ce cas les modules sont installés via pip (qui ici est un alias de pip3)
- soit ton projet n'est pas configuré dans un venv et ses dépendances doivent être installés au niveau du système
- dans ce cas, les modules sont installés depuis un terminal Linux, de préférence via apt et sinon via pip3. pour python3 et pip pour python2
Il n'y a pas vraiment de bonne ou de mauvaise approche, les deux méthodes ont leur avantages et leur inconvénients.
Les venv sont précisément là pour :
- abstraire ton projet de ce qui est peut être installé sur ton système et s'assurer que tu as conscience de toutes les dépendances de ton projet,
- dé-corréler ton projet des mises à jour de ton système
- en contrepartie, tu réinstalles python pour chaque projet, ce qui peu à terme être volumineux (et redondant)
Vu ce qui est affiché à ton écran, j'ai l'impression que tu es dans le venv meta-tf2. Les dépendances pip d'un venv sont généralement listées dans un fichier requirements.txt.
Bonne chance
- soit ton projet est configuré dans un venv et ses dépendances doivent être installés dans ce venv
