ModuleNotFoundError: No hay un módulo llamado smbus2.

Achta -  
mamiemando Mensajes publicados 33173 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

  1. mamiemando Mensajes publicados 33173 Fecha de registro   Estado Moderador Última intervención   7 945
     

    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
    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
  2. 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
    1. Achta
       

      Oui, j'ai plusieurs versions de Python.

      Python 2.7.17

      Python 3.6.9

      Python 3.7.5 dans un environnement

      0
  3. mamiemando Mensajes publicados 33173 Fecha de registro   Estado Moderador Última intervención   7 945
     

    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
  4. 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
  5. mamiemando Mensajes publicados 33173 Fecha de registro   Estado Moderador Última intervención   7 945
     

    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