首页 > 解决方案 > Python:使用 Docker 时无法导入模块“flask-RESTPlus”

问题描述

我使用 Docker 环境实现了一个小型 Flask 应用程序。

这是我的项目结构

dockertest
├─ .vscode
│  └─ settings.json
├─ compose_flask
   ├─ Dockerfile
   ├─ app.py
   ├─ docker-compose.yml
   └─ requirements.txt

这是Dockerfile

FROM python:3.8.0
ADD . /code
WORKDIR /code
RUN pip3 install -r requirements.txt
RUN pip3 install Werkzeug==0.16.0
CMD python app.py

这是requirements.txt

flask-restplus
flask
redis

这是docker-compose.yml:

version: '2'
services:
    web:
        build: .
        ports:
            - "5000:5000"
        volumes:
            - .:/code
        depends_on:
            - redis
    redis:
        image: redis

最后是我的app.py

from flask import Flask
from redis import Redis
from flask_restplus import fields, Api, Resource

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    print(redis.incr('hits'))
    return 'This Compose/Flask demo has been viewed %s time(s).' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

使用命令构建:build -t compose-flask:latest .工作得很好!当我尝试使用 启动容器时docker-compose up,出现以下错误消息:

redis_1  | 1:M 10 Mar 2020 23:10:05.011 * Ready to accept connections
web_1    | Traceback (most recent call last):
web_1    |   File "app.py", line 4, in <module>
web_1    |     from flask_restplus import fields, Api, Resource
web_1    | ImportError: No module named flask_restplus
compose_flask_web_1 exited with code 1

似乎 Python 无法找到 flask-RESTPlus 包?构建的控制台输出告诉我,flask-RESTPlus 已成功安装。奇怪的是,没有 Docker 的同一个例子工作得很好,没有任何导入错误!!

我无法弄清楚问题是什么......如果有人可以提供帮助,我会很高兴!

标签: pythondockerflaskdocker-composeflask-restplus

解决方案


推荐阅读