2017-01-05 1 views
2

나는 파이썬과 PHP가 포함 된 도커를 만들고 있습니다. 나는 다른 도커에있는 MQTT 브로커에 연결하기위한 python 스크립트를 작성 중이다. 내 dockerfile에서가져 오기 오류 : paho.mqtt.client를 찾을 수 없음

난 다음 명령을 사용하여 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 

을 그러나 나는 다음과 같은 오류 얻을 파이썬 스크립트를 실행하면

ImportError: No module named paho.mqtt.client 

고정 표시기를 설치시 paho-mqtt 설치와 관련하여 오류가 표시되지 않습니다. 누군가가 이것을 안내 할 수 있다면 좋을 것입니다. 당신은 리눅스 버전 2.7에 Python3하지만 어떤 이유로 인터프리터 기본값을 설치 한

내가 문제를 발견 생각

+1

python3을 통해 설치하는 것 같습니다. python3을 쳐다 보시겠습니까? – frlan

+0

''paho-mqtt'를 설치할 때 경고 메시지가 나왔습니까? '삐삐 목록 '에서'파호 메 퀘트'를 찾을 수 있습니까? – Eddie

+0

@frlan 파이썬 2.7로 시도했지만 지금은 스크립트가 실행되지 않는 것처럼 보입니다. Dockerfile 전체를 첨부해야합니까? – Sid411

답변

4

.

대신 pip3 install paho-mqtt python-etcd을 사용해보세요.

아니면 작동하지 않는 경우, 당신은 문자 그대로 복사하여 Python3site-packages 폴더로 Python2.7site-packages 폴더에서 paho 폴더를 붙여 넣을 수 있습니다. 방금 Python2에 대한 paho-mqtt 1.2Meld diff 도구를 사용하여 Python3에 대해 paho-mqtt 1.2과 정확히 일치 함을 확인했습니다. 직접 복사하여 붙여 넣을 때 pip list은 복사 한 패키지를 표시하지 않습니다.

site-packages은 일반적으로 시스템 lib 폴더 안에 있습니다. 그것은 Python이 설치된 방법에 따라 다릅니다. 제 경우에는 모든 것이 $HOME/.pyenv 폴더 안에 있습니다.

기억 Python2는 자신의 site-packages 폴더가 있고 Python3는 자신의이 site-packages 폴더 위치를 패키지에 대한 Python 검색합니다. 때로는 Debian 기반 Linux 배포판을 사용하는 경우 dist-packages 폴더를 확인하여 찾고있는 패키지를 찾을 수 있는지 확인하십시오.

+0

사이트 패키지는 dist 패키지와 같은가요? – Sid411

+0

그들은 본질적으로 동일한 것입니다. 왜 그런지 모르지만 데비안 기반의 패키지 관리자는 대신'dist-packages '를 사용하는 것을 좋아합니다. – Eddie

+0

고마워요. 사본 붙여 넣기 것은 작동했다. 그 오류를 제공하지 않습니다. – Sid411

관련 문제