我正在创建一个包含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
对于paho-mqtt安装,docker安装不会显示任何错误。 如果有人可以指导这一点,那就太好了。
答案 0 :(得分:9)
我想我已经找到了问题,
您已安装Python3
但由于某种原因,解释器在Linux中默认为2.7版。
请尝试使用pip3 install paho-mqtt python-etcd
。
如果它不起作用,您可以将paho
Python2.7
文件夹中的site-packages
文件夹复制并粘贴到Python3
site-packages
文件夹中。我刚刚验证paho-mqtt 1.2
的{{1}}与使用Python2
差异工具的paho-mqtt 1.2
的{{1}}完全相同。请注意,当您直接复制并粘贴Python3
时,将不会显示您复制的包。
Meld
通常位于系统pip list
文件夹中。这取决于site-packages
的安装方式。在我的情况下,一切都在lib
文件夹中。
请记住Python
拥有自己的$HOME/.pyenv
文件夹,而Python2
拥有自己的site-packages
文件夹,其中Python3
会搜索这些包。有时,如果您使用的是基于site-packages
的Linux发行版,请务必在Python
文件夹中查看是否可以找到您要查找的软件包。
答案 1 :(得分:0)
您可以尝试安装Paho lib:
git clone https://github.com/eclipse/paho.mqtt.python
有了代码后,也可以从存储库中安装它:
cd paho.mqtt.python
python setup.py install