我正在创建一个Flask Web应用程序,我有一个存储一些配置的文件。但是,一些内部模块需要引用config.py,它位于上面的两个目录中。我使用相对进口,我认为这是一种不好的做法,并且不灵活。
结构:
workspace:
app:
database:
__init__.py
database.py
config.py
在我的database.py文件中,我将配置导入为import ...config
。
还有更好的方法吗?
答案 0 :(得分:1)
您应该查看Flasky中如何管理配置。基本上,config.py
驻留在应用程序根目录中,就像在项目中一样。
然后在您的app文件夹中,您将应用程序作为一个包启动,即添加__init__.py
文件。
__init__.py
包含config
的导入声明:
from config import config
然后,您可以使用Flask blueprints来启动对配置的调用。另请参阅Flask中如何管理larger applications。
总而言之,现有资源需要进行四次更改:
__init__.py
文件使您的应用成为一个包。__init__.py
目录中的app
。database/
)中创建一个__init__.py
文件,以允许该模块用作较大烧瓶应用程序中的蓝图。 [注意,在这种情况下,模块是指应用程序的模块化部分; 不到python模块;让我感到困惑。] app/__init__.py
导入蓝图,即from .database import database as db_blueprint app.register_blueprint(db_blueprint)
这是一项腿部工作,但如果你有兴趣编写更复杂的应用程序并且(当然)组织你的项目,这真的很棒。
答案 1 :(得分:0)
通常我会建议在这种情况下进行模块级别的导入,因此有些内容与from application import config
类似。
由于您的config.py
位于裸露的目录中,当然不可能......除非您将config.py
移到应用中的某个位置。
另一种解决方案可能是创建一个管理配置的类/应用程序,以便始终可以使用它。
说完了,我确定我理解这个配置文件的必要性。 Flask会自动处理配置吗?只需导入您的应用并使用app.config
即可获得配置。