Likely a python version problem when trying to use paho-mqtt



Hello. I’m running a python app on a Pi3. When I push the code using local mode, it runs, connects to an MQTT Broker, and publishes messages as I expect. But, when I disable local mode, and push it to the application with “git push resin master”, I get an error about “paho.mqtt.client” isn’t found.

Based on, I’m guessing this is a python version problem. SSHing into the device, I see python 2.7, 3.4, and I think a 3rd version, on the device. How do I clean this up?

Here’s my dockerfile. Notice that I use a debian image for the base, not a python image, because I want to be able to apt-get the “sense-hat” package. Maybe there’s a better way to handle this.

I’d appreciate any insight. Thanks.

# base-image for python
# We use a debian image, so we can add sense-hat libraries
# See resin-io-playground/sense-tunnel git repository for an example.
# see more about dockerfile templates here:
FROM resin/raspberry-pi3-debian:jessie

# use apt-get if you need to install dependencies,
# for instance if you need ALSA sound utils, just uncomment the lines below.
RUN apt-get update && apt-get install -yq \
    python python-pip sense-hat raspberrypi-bootloader && \
  apt-get clean && rm -rf /var/lib/apt/lists/*

# Install python modules
RUN pip install python-dateutil
RUN pip install paho-mqtt python-etcd
RUN pip install pyserial

# Set our working directory
WORKDIR /usr/src/app

# This will copy all files in our root to the working  directory in the container
COPY . .

# switch on systemd init system in container

# will run when container starts up on the device
CMD ./startDemo



I’m not familiar with paho-mqtt but I think that you install dependencies for the python 2 interpreter, while you run the python 3 interpreter.

You can try install the dependencies with pip3 instead, e.g.:
pip3 install paho-mqtt python-etcd

and see if that works, since the error you get indicates that the dependency you are searching is not find in the site-packages folder of the python interpreter.