导入错误:找不到paho.mqtt.client

Sid*_*411 8 python mqtt docker paho

我正在创建一个包含python和php的docker.我正在编写一个python脚本来连接到驻留在另一个docker中的MQTT代理.

在我的dockerfile中,我确保使用以下命令安装paho客户端:

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
Run Code Online (Sandbox Code Playgroud)

但是,当我运行python脚本时,我收到以下错误:

ImportError: No module named paho.mqtt.client
Run Code Online (Sandbox Code Playgroud)

docker安装没有显示有关paho-mqtt安装的任何错误.如果有人可以指导这一点,那就太棒了.

Edd*_*die 16

我想我找到了问题,

您已经安装Python3但由于某种原因,解释器在Linux中默认为2.7版.

请尝试使用pip3 install paho-mqtt python-etcd.

或者,如果它不起作用,您可以将paho文件Python2.7 site-packages夹中的Python3 site-packages文件夹复制并粘贴到文件夹中.我刚才已经证实paho-mqtt 1.2Python2是完全一样paho-mqtt 1.2Python3使用Meld比较工具.请注意,当您直接复制并粘贴时,pip list将不会显示您复制的包.

site-packages通常在您的系统lib文件夹中.这取决于Python安装方式.在我的情况下,一切都在$HOME/.pyenv文件夹内.

记得Python2有它自己的site-packages文件夹,并Python3有自己的site-packages文件夹Python搜索包.有时,如果您使用的是Debian基于Linux的发行版,请务必检查dist-packages文件夹内部以查看是否可以找到您要查找的软件包.

  • @ Sid411我很高兴它有所帮助.请注意,手动复制和粘贴不是"pip"友好的. (2认同)