Flask/Python如何导入高一级的配置文件

2024-05-29 03:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个Flask网络应用程序,遇到了一个小问题,真的很困扰我。这是我的微博.py文件:

from flask import Flask
from flask import render_template, flash, redirect
from forms import LoginForm

app = Flask(__name__)
app.config.from_object('config')

@app.route('/')
@app.route('/index')
...

这是我的项目结构:

^{pr2}$

我的问题是为什么配置.py文件必须在应用程序文件夹之外,并且是上一级吗?我真的不能告诉自己这是“魔法”,所以我必须找到答案,但我已经惨败至今。在

我的发现表明它与导入系统有关(python导入确实很奇怪),但问题是microblog.app.root_路径是。。。(/Users/myname/microblog/app)所以它不可能看到配置文件。发生什么事?在

如果你知道答案,请把我可怜的灵魂从疯狂中解救出来。提前谢谢你!在


Tags: 文件答案frompyimport程序configapp
2条回答

根据Flask教程,run.py是启动应用程序时实际运行的内容,run.py与{}位于同一目录中。从命令行运行python时,当前目录通常位于模块路径上,因此如果从该目录运行run.py,则{}在您的路径上可用(作为绝对导入)

我只是浏览了一下本教程的部署部分,但它可能依赖于microblog目录作为工作目录。在

与其使用Python文件进行配置,不如使用更适合此类工作的格式。JSON就是一个这样的候选者,您可以这样做(作为Step 2 of the official tutorial suggests的变体):

import json

with open('../config.json') as f:
    config = json.load(f)

app.config.update(config)

而不是config.py文件,而是一个config.json文件(在同一个位置),看起来像

^{pr2}$

当然,您不必使用json,还有其他配置文件格式可供您使用,但如何使用则取决于您自己。在

相关问题 更多 >

    热门问题