我正在创建一个 Flask Web 应用程序,并且有一个存储一些配置的文件。然而,一些内部模块需要引用位于上面两个目录的config.py。我正在使用相对导入,我认为这是一种不好的做法并且不灵活。
结构:
workspace:
app:
database:
__init__.py
database.py
config.py
在我的database.py 文件中,我将配置导入为import ...config
。
有更好的办法吗?
最佳答案
您应该检查 Flasky 中的配置是如何管理的。基本上,config.py
驻留在应用程序根目录中,就像在您的项目中一样。
然后在您的应用程序文件夹中将应用程序作为包启动,即通过添加 __init__.py
文件。
__init__.py
包含您的 config
的导入语句:
从配置导入配置
然后你可以使用Flask blueprints发起对您的配置的调用。还可以看看如何larger applications在 Flask 中管理。
总而言之,需要对现有源进行大约四处更改:
- 通过创建
__init__.py
文件将您的应用程序打包。 - 将导入语句添加到根
app
目录中的__init__.py
。 - 在您的模块目录(在本例中为
database/
)中创建一个__init__.py
文件,以允许该模块在较大的 Flask 应用程序中用作蓝图。 [注意,在这种情况下,模块是指应用程序的模块化部分; 不到 python 模块;我知道很困惑。] - 返回
app/__init__.py
导入蓝图,即
from .database import database as db_blueprint app.register_blueprint(db_blueprint)
这需要一些跑腿工作,但如果您有兴趣编写更复杂的应用程序并(当然)组织您的项目,那么这真的很棒。
关于Python,导入配置文件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587457/