在我的Docker容器中,“ModuleNotFoundError:No module named <package>”

我试图在Docker容器中运行一个python脚本,我不知道为什么,python找不到任何python的模块。 我认为这与PYTHONPATH envvariables有关,所以我试图将它添加到Dockerfile中,如下所示: ENV PYTHONPATH $PYTHONPATH

但它没有工作。 这是我的Dockerfile的样子:

 FROM ubuntu:16.04 MAINTAINER SaveMe SaveMe@Desperate.com ADD . /app WORKDIR /app RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y locales # Set the locale RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ locale-gen ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 ENV PYTHONPATH ./app #Install dependencies RUN echo "===> Installing sudo to emulate normal OS behavior..." RUN apt-get install -y software-properties-common RUN apt-add-repository universe RUN add-apt-repository ppa:jonathonf/python-3.6 RUN (apt-get update && apt-get upgrade -y -q && apt-get dist-upgrade - y -q && apt-get -y -q autoclean && apt-get -y -q autoremove) RUN apt-get install -y libxml2-dev libxslt-dev RUN apt-get install -y python3.6 python3.6-dev python3.6-venv openssl ca-certificates python3-pip RUN apt-get install -y python3-dev python-dev libffi-dev gfortran RUN apt-get install -y swig RUN apt-get install -y sshpass openssh-client rsync python-pip python- dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev libpulse-dev RUN pip install --upgrade pip RUN pip install bugsnag #Install python package + requirements.txt RUN pip3 install -r requirements.txt CMD ["python3.6", "import_emails.py"] 

当我试图运行: sudo docker run <my_container>我有这个回溯:

 Traceback (most recent call last): File "import_emails.py", line 9, in <module> import bugsnag ModuleNotFoundError: No module named 'bugsnag' 

正如你可以看到我正在使用python3.6这个项目。 任何领导如何解决这个问题?

在容器内部,当我pip install bugsnag ,我得到以下内容:

 root@af08af24a458:/app# pip install bugsnag Requirement already satisfied: bugsnag in /usr/local/lib/python2.7/dist-packages Requirement already satisfied: webob in /usr/local/lib/python2.7/dist-packages (from bugsnag) Requirement already satisfied: six<2,>=1.9 in /usr/local/lib/python2.7/dist-packages (from bugsnag) 

你可能在这里看到这个问题。 你正在安装python2.7,这是操作系统的默认,而不是python3.6,这是你正在尝试使用。

看看这个答案来解决这个问题: 在我的Docker容器中“ModuleNotFoundError:No module named <package>”

或者,这是一个问题virtualenv和类似的工具是要解决,你也可以看看。

因为你使用py3,请尝试使用pip3来安装bugsnag而不是pip