Flask/Python如何导入更高级别的配置文件
我正在写一个Flask web应用程序,遇到了一个小问题,真的很困扰我。这是我的microblog.py文件: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
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
importmicroblog.py
。正如您在microblog.py
中看到的,我从表单导入LoginForm()导入了LoginForm()
,如果路径在microblog
文件夹中,为什么导入不是从app.forms导入LoginForm()
{
"DEBUG": true,
"SECRET_KEY": "development key"
}