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

Flask/Python如何导入更高级别的配置文件,python,flask,config,Python,Flask,Config,我正在写一个Flask web应用程序,遇到了一个小问题,真的很困扰我。这是我的microblog.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

我正在写一个Flask web应用程序,遇到了一个小问题,真的很困扰我。这是我的microblog.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')
...
这是我的项目结构:

microblog\
  flask\
    <virtual environment files>
  app\
    static\
    templates\
    __init__.py
    microblog.py
    forms.py
  tmp\
  run.py
  config.py
微博\
烧瓶\
应用程序\
静止的\
模板\
__初始值
microblog.py
forms.py
tmp\
run.py
config.py
我的问题是,为什么config.py文件必须在app文件夹之外,并且是一级以上的文件?我真的不能告诉自己这是“魔法”,所以我必须找到答案,但到目前为止我失败得很惨

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


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

与其在配置中使用Python文件,不如使用更适合此类工作的格式。其中一个候选对象是JSON,您可以这样做(作为

而不是
config.py
文件,您将有一个
config.json
文件(在同一位置),它可能看起来像

{
    "DEBUG": true,
    "SECRET_KEY": "development key"
}

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

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


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

哦,我遵循了本教程:作者正在使用config.py。我同意JSON会更好,但我只是好奇为什么配置文件会在microblog.py中使用,尽管它比microblog.py高一级。它可能希望您稍后将其复制到其他地方,以便从脚本中导入,我真的不知道,因为我发现存储配置设置的
config.py
模式是不好的做法。我同意你的看法。这似乎是唯一有意义的方法。但是,我的
run.py
import
microblog.py
。正如您在
microblog.py
中看到的,我从表单导入LoginForm()导入了
LoginForm()
,如果路径在
microblog
文件夹中,为什么导入不是从app.forms导入LoginForm()
{
    "DEBUG": true,
    "SECRET_KEY": "development key"
}