1. ホーム
  2. python

[解決済み] インポートエラー:paho.mqtt.clientが見つかりません。

2022-02-12 11:34:44

質問

PythonとPHPを含むDockerを作成しています。別のドッカーにあるMQTTブローカーに接続するためのpythonスクリプトを書いています。

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 に対して Python2 とは全く同じです。 paho-mqtt 1.2 に対して Python3 を使用しています。 Meld diff ツールを使用します。直接コピー&ペーストした場合 pip list は、コピーしたパッケージは表示されません。

site-packages は通常、システム内にある lib フォルダーに格納されます。それは、どのように Python がインストールされます。私の場合、すべてが $HOME/.pyenv フォルダーに格納されます。

リメンバー Python2 は、それ自体が site-packages フォルダと Python3 は、独自の site-packages フォルダに Python は、パッケージを検索します。時々、もしあなたが Debian ベースの Linux ディストリビューションであることを確認してください。 dist-packages フォルダにあるパッケージが見つかるかどうか確認してください。