【目录结构】
gotest(包名)
-- __init__.py
【问题代码】
__init__.py
from flask import Flask
from gotest.settings import config,get_app_config
def create_app(config_name=None):
if config_name is None:
config_name=get_app_config('FLASK_CONFIG')
app = Flask('app')
cfobj=config[config_name]
print(cfobj)#为什么会输出2次结果呢?
app.config.from_object(cfobj)
return app
app=create_app()
【运行结果】
<class 'app.settings.ProductingConfig'>
<class 'app.settings.ProductingConfig'>
【问题分析】
检查了一下自己的目录结构才发现问题:
单独运行的文件是gotest包下的__init__文件
我在第2行代码有从gotest.settings导入依赖程序的操作
当程序运行到gotest.settings时,会首先运行gotest包下的__init__文件,就会执行到app=create_app()代码行
而我又执行了单独运行__init__,这样app=create_app()就相当于被运行了2次了
【解决办法】
不要在__init__文件中创建Flask对象app,而是直接另建1个文件app用来运行生成app的工厂函数