Sid411
Sid411

Reputation: 703

Import Error: paho.mqtt.client not found

I am creating a docker containing python and php. I am writing a python script to connect to a MQTT broker residing in another docker.

In my dockerfile I ensure that I install the paho client by using the following commands:

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

However when I run the python script I get the following error:

ImportError: No module named paho.mqtt.client

The docker installation does not show any error with regards to paho-mqtt installation. It will be great if someone can guide on this.

Upvotes: 15

Views: 120811

Answers (3)

Vinci
Vinci

Reputation: 1286

It works when there's version problem.

pip install paho-mqtt==1.6.1

Upvotes: 0

Fernando Simplicio
Fernando Simplicio

Reputation: 41

You can try install Paho lib:

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

Once you have the code, it can be installed from your repository as well:

cd paho.mqtt.python
python setup.py install

Upvotes: 4

Eddie
Eddie

Reputation: 1063

I think I have found the problem,

You have installed Python3 but for some reason the interpreter defaults to version 2.7 in Linux.

Try using pip3 install paho-mqtt python-etcd instead.

Or if it does not work, you can literally copy and paste the paho folder from your Python2.7 site-packages folder to your Python3 site-packages folder. I have just verified paho-mqtt 1.2 for Python2 is exactly the same as paho-mqtt 1.2 for Python3 using a Meld diff tool. Please note, when you directly copy and paste pip list will not display the package you copied.

site-packages are usually inside your system lib folder. It depends upon how Python is installed. In my case everything is inside $HOME/.pyenv folder.

Remember Python2 has it's own site-packages folder and Python3 has it's own site-packages folder where Python searches for the packages. Sometimes if you are using a Debian based Linux distro please make sure to check inside the dist-packages folder as well to see if you can find the package you are looking for.

Upvotes: 28

Related Questions