【问题标题】:Run python wtih flask in docker returns ModuleNotFoundError: No module named 'flask'在 docker 中使用烧瓶运行 python 返回 ModuleNotFoundError: No module named 'flask'
【发布时间】:2020-07-08 07:16:27
【问题描述】:

我在 docker 中运行 python 并遇到 ModuleNotFoundError: No module named 'flask' 错误消息。有什么想法我在 Dockerfile 或要求中缺少什么?

FROM python:3.7.2-alpine

RUN pip install --upgrade pip
RUN apk update && \
        apk add --virtual build-deps gcc python-dev 

RUN adduser -D myuser
USER myuser
WORKDIR /home/myuser
COPY --chown=myuser:myuser ./requirements.txt /home/myuser/requirements.txt
RUN pip install --no-cache-dir --user -r requirements.txt

ENV PATH="/home/myuser/.local/bin:${PATH}"

COPY --chown=myuser:myuser . .

ENV FLASK_APP=/home/myuser/app.py

CMD ["python", "app.py"]
~

在 app.py 中我使用这一行

from flask import Flask, jsonify

要求看起来像这样

Flask==0.12.5

【问题讨论】:

  • 我没有看到 Dockerfile 中使用 pip 安装了烧瓶。
  • int's in this line RUN pip install --no-cache-dir --user -r requirements.txt
  • flask 已安装在您的用户目录中,但是 python 可以看到 flask 模块的路径吗?
  • 我怀疑这条线 COPY --chown=myuser:myuser ./requirements.txt /home/myuser/requirements.txt 应该是 COPY --chown=myuser:myuser requirements.txt /home/myuser/requirements.txt 并且更好地重建 docker 映像

标签: python docker flask


【解决方案1】:

您可以验证软件包是否正确安装

docker exec <container ID> pip list

【讨论】:

    【解决方案2】:
    1. 我已选择 slim 容器来消除安装 build-deps 等的需要
    2. 使用docker-compose/htpc 合并为root 目录。 static 直接从 nginx 容器提供服务
    FROM python:3-slim
    ENV PYTHONUNBUFFERED 1
    ENV FLASK_APP app.py
    ENV FLASK_RUN_HOST 0.0.0.0
    USER $UNAME
    COPY requirements.txt /htpc/requirements.txt
    WORKDIR /htpc
    RUN echo "install python packages" && \
        pip install -r requirements.txt
    CMD python app.py
    
      htpc:
        container_name: htpc
        environment:
          - PUID=${PUID} # default user id, defined in .env 
          - PGID=${PGID} # default group id, defined in .env
          - TZ=${TZ} # timezone, defined in .env
        build:
          context: .
          dockerfile: flask-Dockerfile
        volumes:
          - .:/htpc
        networks:
          - htpc-network
        ports: 
          - "5000:5000"
        restart: unless-stopped
        volumes: 
          - ../app.py:/htpc/app.py
          - ../mc:/htpc/mc
          - ../templates:/htpc/templates
    
    

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 2016-04-19
      • 2021-07-20
      • 2022-12-19
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      相关资源
      最近更新 更多