我正在尝试在Docker容器中运行python脚本,我不知道为什么,python找不到任何python的模块。我认为它与PYTHONPATH env变量有关,所以我试着在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。如何解决这个问题?
答案 0 :(得分:3)
在容器内,当我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,这是您尝试使用的软件包。
请查看此答案以获取解决此问题的帮助:"ModuleNotFoundError: No module named <package>" in my Docker container
或者,这是一个问题virtualenv
,类似的工具是要解决的问题,你也可以考虑一下。
答案 1 :(得分:0)
因为您正在使用py3,请尝试使用pip3来安装bugsnag而不是pip