Python Flask中出现500 HTTP异常,同时尝试通过app.open_resource()读取文件

Python Flask中出现500 HTTP异常,同时尝试通过app.open_resource()读取文件,python,flask,Python,Flask,差不多就是标题。我在本地计算机上尝试了该代码,结果很好,但在部署(Phusion Passenger)时,这似乎不起作用 from flask import Flask import flask import json import os app = Flask(__name__) @app.route('/mods') def mods_index(): try: reader = app.open_resource(os.path.join(app.root_p

差不多就是标题。我在本地计算机上尝试了该代码,结果很好,但在部署(Phusion Passenger)时,这似乎不起作用

from flask import Flask
import flask
import json
import os

app = Flask(__name__)


@app.route('/mods')
def mods_index():
    try:
        reader = app.open_resource(os.path.join(app.root_path , 'static', 'data', 'modifications.json'))
        modifications = json.load(reader)
        reader.close()
    except:
        flask.abort(500)
    return flask.render_template('mods_index.html', mods=modifications)

我认为这是一个文件路径问题,特别是这一行:
reader=app.open\u resource(os.path.join(app.root\u path,'static','data','modifications.json')
看起来不正确

根据Flask的:
app.open_resource(…)
“从应用程序的资源文件夹中打开资源”。在代码中,指定应用程序的根路径两次:

  • 首先使用
    app.open\u资源(..)
  • 然后再次使用:
    app.root\u路径

  • 因此,您的服务器正试图从以下位置打开您的
    修改.json
    文件:
    /添加特定的错误处理程序(例如
    IOError
    )将有助于您更好地理解这个问题,使用类似
    traceback.print\u exc()
    的方法也是如此。也就是说,您的错误可能是软件无法找到JSON文件。您的try/except中有错误,因此您的except正在运行,而不是try,而flask将以500代码中止,因为您告诉它。尝试使用ide的调试功能,或者如果需要,请将内容打印到标准输出(或文本文件),以确定是什么原因导致except而不是Try触发。删除Try except并设置
    app.debug=True
    。因为它是这个应用程序是不可调试的。非常感谢!最后它确实起了作用,我对此非常生气,以至于我没有意识到这只是一个路径问题。很高兴我能帮上忙!
    reader_path = os.path.join('static', 'data', 'modifications.json'))
    with app.open_resource(reader_path) as f:
        contents = f.read()
         # do_something_with(contents)