ModuleNotFoundError : No module named smbus2.

Fermé
Achta - 14 déc. 2022 à 18:33
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 15 déc. 2022 à 16:26

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

mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
15 déc. 2022 à 11:12

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

1

Le module est installé dans la librairie avec l'ensemble des autres packages. 

Si comme vous le précisez dans votre message, pip et python ne sont pas cohérents, faut-il télécharger pip pour mon environnement python 3.7

0

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 ?

0

Oui j'ai plusieurs versions de python. 

python 2.7.17

python 3.6.9

python 3.7.5 dans un environnement 

0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
15 déc. 2022 à 13:27

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

0

J'ai installé smbus2 et pip show me montre bien qu'il est installé dans la version de python de mon env python 3.7

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
15 déc. 2022 à 16:26

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

0