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
-
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?
-
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
- soit ton projet est configuré dans un venv et ses dépendances doivent être installés dans ce venv
