簡體   English   中英

當我隔離到包中時,python代碼不起作用 在同一文件中工作正常

[英]python code doesn't work when I segregate into packages | works fine in same file

我正在嘗試構建一些寧靜的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)

當我將其放在其他程序包中時,該服務似乎對應用程序不可見。 請指教。

假設您遇到的問題是Flask無法看到您的服務,則在拆分代碼后似乎沒有任何東西可以導入您的服務代碼。

只需修改您的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)

希望這可以幫助 !

您可能想這樣做,或者我建議,如果路由較少,則希望在一個文件中包含所有內容。

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})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM