web-dev-qa-db-fra.com

Erreur d'importation: paho.mqtt.client introuvable

Je crée un docker contenant python et php. J'écris un script python pour me connecter à un courtier MQTT résidant dans un autre docker.

Dans mon dockerfile, je m'assure d'installer le client paho en utilisant les commandes suivantes:

RUN apt-get install -y python3-dev 
RUN apt-get install -y libffi-dev 
RUN apt-get install -y libssl-dev

ADD https://bootstrap.pypa.io/get-pip.py /tmp/get-pip.py 
RUN cat /tmp/get-pip.py | python3 
RUN pip install paho-mqtt 
RUN pip install python-etcd

Cependant, lorsque j'exécute le script python, j'obtiens l'erreur suivante:

ImportError: No module named paho.mqtt.client

L'installation de docker ne montre aucune erreur en ce qui concerne l'installation de paho-mqtt. Ce sera formidable si quelqu'un peut vous guider à ce sujet.

7
Sid411

Je pense avoir trouvé le problème,

Vous avez installé Python3 mais pour une raison quelconque, l'interpréteur utilise par défaut la version 2.7 sous Linux.

Essayez d'utiliser pip3 install paho-mqtt python-etcd au lieu.

Si cela ne fonctionne pas, vous pouvez littéralement copier et coller le dossier paho depuis votre Python2.7site-packages dossier dans votre Python3site-packages dossier. Je viens de vérifier paho-mqtt 1.2 pour Python2 est exactement le même que paho-mqtt 1.2 pour Python3 en utilisant un outil de diff Meld diff. Veuillez noter que lorsque vous copiez et collez directement pip list n'affichera pas le package que vous avez copié.

site-packages se trouvent généralement dans le dossier lib de votre système. Cela dépend de la façon dont Python est installé. Dans mon cas, tout est à l'intérieur $HOME/.pyenv dossier.

Rappelles toi Python2 a son propre site-packages dossier et Python3 a son propre site-packages dossier où Python recherche les packages. Parfois, si vous utilisez une distribution Linux basée sur Debian, assurez-vous de vérifier l'intérieur du dist-packages également pour voir si vous pouvez trouver le package que vous recherchez.

15
Eddie

Vous pouvez essayer d'installer Paho lib:

git clone https://github.com/Eclipse/paho.mqtt.python

Une fois que vous avez le code, il peut également être installé à partir de votre référentiel:

cd paho.mqtt.python
python setup.py install
0
Fernando Simplicio