ModuleNotFoundError: No hay un módulo llamado smbus2.
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
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
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
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

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?