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

问题描述 投票:0回答:3

我正在创建一个包含 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

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

ImportError: No module named paho.mqtt.client

docker 安装没有显示任何有关 paho-mqtt 安装的错误。 如果有人可以指导的话那就太好了。

python docker mqtt paho
3个回答
28
投票

我想我已经找到问题了

您已经安装了

Python3
,但由于某种原因,Linux 中的解释器默认为 2.7 版本。

尝试使用

pip3 install paho-mqtt python-etcd
代替。

或者,如果它不起作用,您可以将

paho
文件夹从
Python2.7
site-packages
文件夹复制并粘贴到
Python3
site-packages
文件夹。我刚刚使用
paho-mqtt 1.2
diff 工具验证了
Python2
paho-mqtt 1.2
Python3
Meld
完全相同。请注意,当您直接复制粘贴时
pip list
不会显示您复制的包。

site-packages
通常位于系统
lib
文件夹内。这取决于
Python
的安装方式。就我而言,所有内容都在
$HOME/.pyenv
文件夹中。

记住

Python2
有它自己的
site-packages
文件夹,并且
Python3
有它自己的
site-packages
文件夹,
Python
在其中搜索包。有时,如果您使用基于
Debian
的 Linux 发行版,请务必检查
dist-packages
文件夹,看看是否可以找到您正在寻找的软件包。


4
投票

您可以尝试安装 Paho lib:

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

一旦获得代码,也可以从您的存储库安装它:

cd paho.mqtt.python
python setup.py install

0
投票

当版本有问题时它可以工作。

pip install paho-mqtt==1.6.1
© www.soinside.com 2019 - 2024. All rights reserved.