2017-01-05 3 views
2

Я создаю докер, содержащий python и php. Я пишу скрипт python для подключения к брокеру MQTT, находящемуся в другом докере.Ошибка импорта: paho.mqtt.client не найден

В моей dockerfile я убедиться, что я установить клиент ПОЗ, используя следующие команды:

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 

Однако, когда я бегу сценарий питона я получаю следующее сообщение об ошибке:

ImportError: No module named paho.mqtt.client 

докер установка не показывает никаких ошибок в отношении установки paho-mqtt. Будет здорово, если кто-то может руководствоваться этим.

+1

Кажется, вы установили его через python3 - вы уверены, что смотрите на python3? – frlan

+0

У вас возникли какие-либо предупреждения об установке 'paho-mqtt'? Можете ли вы найти 'paho mqtt' в себе' pip list'? – Eddie

+0

@frlan Я пытался с python 2.7, но теперь скрипт даже не кажется выполненным. Должен ли я прикрепить весь файл Docker? – Sid411

ответ

4

Я думаю, что я нашел эту проблему,

Вы установили Python3, но по какой-то причине интерпретатор по умолчанию в версии 2.7 в Linux.

Попробуйте вместо этого использовать pip3 install paho-mqtt python-etcd.

Или, если он не работает, вы можете буквально копировать и вставлять paho папку из папки Python2.7site-packages в папку Python3site-packages. Я только что подтвердил paho-mqtt 1.2 для Python2 в точности то же самое, что и paho-mqtt 1.2 для Python3 с помощью инструмента сравнения Meld. Обратите внимание, что при прямом копировании и вставке pip list не отобразится пакет, который вы скопировали. В вашей системе lib. Это зависит от того, как установлен Python. В моем случае все находится внутри папки $HOME/.pyenv.

Помните Python2 имеют собственную site-packages папки и Python3 имеет собственную site-packages папки, в которой Python ищет пакеты. Иногда, если вы используете Linux-дистрибутив Debian, пожалуйста, обязательно зайдите в папку dist-packages, чтобы узнать, можете ли вы найти нужный пакет.

+0

Являются ли пакеты сайтов такими же, как пакеты dist? – Sid411

+0

Это по сути то же самое. Я не знаю, почему, но менеджеры пакетов на основе Debian любят вместо этого использовать 'dist-packages'. – Eddie

+0

Большое спасибо. Работа с копировальной пастой работала. Это не дает этой ошибки. – Sid411

Смежные вопросы