gpt4 book ai didi

python - Dockerize Flask : Error: While importing 'app' , 引发了 ImportError

转载 作者:行者123 更新时间:2023-12-05 05:53:52 24 4
gpt4 key购买 nike

我正在尝试对我的 Flask API 进行 docker 化。一旦我尝试启动我的图像,我就会收到消息:

* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: python -m flask run [OPTIONS]
Try 'python -m flask run --help' for help.

Error: While importing 'app', an ImportError was raised.

如果我用终端 python -m flask run 启动 Flask 应用程序,一切都会按预期进行。现在我被这个问题困住了。

这是我的代码:

from flask import Flask
from bson import json_util
from flask_pymongo import PyMongo
from flask_cors import CORS
import json

app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://194.163.147.192:27017/test"
CORS(app)
mongo = PyMongo(app)


def parse_json(data):
return json.loads(json_util.dumps(data))


@app.route('/')
def home():
return 'Hello'


@app.route('/residential', methods=['GET'])
def find_residential(): # put application's code here
test = mongo.db.acs.find_one({"name": "Residential"})
response = Flask.jsonify(parse_json(test))
response.headers.add('Access-Control-Allow-Origin', '*')
return response


@app.route('/commercial', methods=['GET'])
def find_commercial(): # put application's code here
test = mongo.db.acs.find_one({"name": "Commercial"})
response = Flask.jsonify(parse_json(test))
response.headers.add('Access-Control-Allow-Origin', '*')
return response


@app.route('/healthcare', methods=['GET'])
def find_health_care(): # put application's code here
test = mongo.db.acs.find_one({"name": "Health Care"})
response = Flask.jsonify(parse_json(test))
response.headers.add('Access-Control-Allow-Origin', '*')
return response


@app.route('/germany', methods=['GET'])
def find_germany():
test = mongo.db.germanies.find_one()
response = Flask.jsonify(parse_json(test))
response.headers.add('Access-Control-Allow-Origin', '*')
return response


if __name__ == '__main__':
app.debug = False
app.run()

我的 requirements.txt 看起来像这样

bson==0.5.10
click==8.0.3
colorama==0.4.4
Flask==2.0.2
Flask-Cors==3.0.10
Flask-PyMongo==2.3.0
itsdangerous==2.0.1
Jinja2==3.0.2
MarkupSafe==2.0.1
pymongo==3.12.1
python-dateutil==2.8.2
six==1.16.0
Werkzeug==2.0.2

我的 Dockerfile 看起来像这样

FROM python:3.8-slim-buster
WORKDIR /api
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

感谢您的帮助:)

项目结构如下:

API
L venv
L app.py
L Dockerfile
L requirements.txt

最佳答案

我认为您的问题与您的需求文件有关。因为您将 bson 作为依赖项包含在内,它也包含在 pymongo 库中。参见 this question .删除它似乎可以解决问题:

 ~/tmp/so_q $ docker build -t myimage .                                                             8s nathanielford@nford 20:51:04
Sending build context to Docker daemon 5.12kB

...

Successfully tagged myimage:latest
 ~/tmp/so_q $ docker run myimage 13s nathanielford@nford 20:51:26
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://192.168.9.2:5000/ (Press CTRL+C to quit)

关于python - Dockerize Flask : Error: While importing 'app' , 引发了 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69815313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com