当我分离成包时,python代码不起作用在同一个文件中工作正常

问题描述 投票:-1回答:2

我正在尝试构建一些宁静的API。当我尝试将代码分离到包中时,服务不起作用,我在服务器上找不到URL。举些例子:

场景1 [工作正常,因为我在main.py中拥有所有内容]

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/echo', methods=['POST'])
def echo():
    message = request.get_json().get('message', '')
    return jsonify({'message': message})

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

现在,当我尝试将代码分离到不同的包中时,它只是不起作用。例如:

场景2 [不起作用,因为代码在不同的包中]

我正在api / restful.py初始化应用程序

from flask import Flask, jsonify, request
app = Flask(__name__)

然后在api / endpoints / service.py中创建了一个服务

from api.restplus import app, jsonify, request

@app.route('/echo', methods=['POST'])
def echo():
    message = request.get_json().get('message', '')
    return jsonify({'message': message})

最后在main.py中

from api.restplus import app

if __name__ == '__main__':
   app.run(host='127.0.0.1', port=8080, debug=True)

当我把它放在不同的包中时,似乎该应用程序看不到该服务。请指教。

python flask
2个回答
1
投票

假设您遇到的问题是烧瓶没有看到您的服务,一旦您拆分代码,看起来没有任何东西正在导入您的服务代码。

只需修改您的main.py文件,看起来像这样修复它:

from api.restplus import app

import api.endpoints.service

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

希望这可以帮助 !


1
投票

您可能想要这样做或者我建议,如果有更少的路由尝试在一个文件中进行翻转。

from yourfile import app

if __name__ == '__main__':
   app.run(host='127.0.0.1', port=8080, debug=True)

在yourfile.py中

from flask import Flask, jsonify, request
app = Flask(__name__)

@app.route('/echo', methods=['POST'])
def echo():
    message = request.get_json().get('message', '')
    return jsonify({'message': message})
© www.soinside.com 2019 - 2024. All rights reserved.