ModuleNotFoundError: No hay un módulo llamado smbus2.

Achta -  
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   -

Hola,

En el marco de un proyecto necesito comunicarse en i2c entre una Jetson Nano y un Arduino.

Instalé smbus, pero ModuleNotFoundError: No module named smbus. Vi que smbus no funciona en Python 3.7, así que instalé smbus2.

Instalé el paquete smbus2 por varios métodos: sudo pip ..., sudo apt. Sin embargo, cuando llamo a import smbus2 o from smbus2 import SMBus, obtengo ModuleNotFoundError: No module named smbus2.

¿Sabrías qué hice mal?  


5 respuestas

mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
 

Hola,

  • ¿En qué directorio se instala el módulo smbus2?
  • ¿Este directorio está referenciado entre los que se listan en:
import sys print(sys.path)
  • En particular, si tienes varias versiones de Python y/o usas entornos virtuales (venv), asegúrate de que el pip y el Python que utilizas sean coherentes (por ejemplo; si pip instala módulos para Python 3.9 pero en la práctica usas Python 3.8, entonces Python 3.8 no encontrará el módulo que habrás instalado).

Buena suerte

1
Achta
 

El módulo está instalado en la biblioteca junto con el conjunto de otros paquetes.

Si como usted indica en su mensaje, pip y Python no son coherentes, ¿debo descargar pip para mi entorno de Python 3.7?

0
jigoteur
 

Buenas noches, ¿estás seguro de que este módulo se instaló correctamente?

Qué sale cuando:

pip3 show smbus2

y

apt show smbus

¿Tienes varias versiones de Python 3 en tu equipo?

0
Achta
 

Oui, j'ai plusieurs versions de Python.

Python 2.7.17

Python 3.6.9

Python 3.7.5 dans un environnement

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
 

Hola,

¿Puedes especificar para una versión específica de Python usar pip como se explica aquí. Por ejemplo, para instalar smbus en python3.9 :

python3.9 -m pip install smbus

Buena suerte

0
Achta
 

He instalado smbus2 y pip show me muestra claramente que está instalado en la versión de Python de mi entorno Python 3.7

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
 

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