我正在创建一个包含 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 安装的错误。 如果有人可以指导的话那就太好了。
我想我已经找到问题了
您已经安装了
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
文件夹,看看是否可以找到您正在寻找的软件包。
您可以尝试安装 Paho lib:
git clone https://github.com/eclipse/paho.mqtt.python
一旦获得代码,也可以从您的存储库安装它:
cd paho.mqtt.python
python setup.py install
当版本有问题时它可以工作。
pip install paho-mqtt==1.6.1