Docker ModuleNotFoundError: 没有名为 'boto3' 的模块



我正在尝试使用django和在views.py文件中添加导入boto3 .

它工作完美,当我尝试它没有docker,但现在我得到这个错误:

ModuleNotFoundError: No module named 'boto3'

这是我的dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN pip install boto3 -t .
COPY . /app/
ADD . /app
ENV PYTHONPATH /app
CMD [ "python", "/app/greet/views.py" ]

,这是我的docker-compose。yml文件

version: '3'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes: 
- .:/app
ports: 
- "8000:8000"

编辑:

我也试过这个,但它也不起作用,与boto3在requirements.txt:

FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /app
ADD . /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app/

您的问题是docker-compose.ymlvolumes部分。在Dockerfile中,您需要花费大量精力来设置/app,包括将boto3安装到该目录中…

…然后把你的本地目录挂载到它上面,有效地隐藏了容器中/app中包含的所有内容形象。

解决方案是:

  • 不要在/app上挂载任何东西。去掉volumes部分,并在需要时重新构建映像来刷新代码。还是…

  • 与其将boto3安装到/app中,不如将其包含在requirements.txt并将其与其他依赖项一起安装。现在在/app上安装一些东西不会隐藏boto3

我在Dockerfile中使用RUN pip install --user ...解决了类似的问题,它将默认将模块安装到/root/.local/lib/python3.9/site-packages而不是/usr/local/lib/python3.9/site-packages

我有同样的问题,由于某种原因,python在/usr/lib/python3.x/site-packages中安装boto3而不是默认的/usr/local/lib/python3.x/site-packages

/usr/lib/python3.x/site-packages这个文件夹不包含在docker容器的PYTHONPATH中,所以要么手动操作,要么将模块移到另一个文件夹

最新更新