Python,导入配置文件的最佳实践

时间:2016-02-23 20:26:22

标签: python import flask

我正在创建一个Flask Web应用程序,我有一个存储一些配置的文件。但是,一些内部模块需要引用config.py,它位于上面的两个目录中。我使用相对进口,我认为这是一种不好的做法,并且不灵活。

结构:

workspace:
    app:
      database:
         __init__.py
         database.py
    config.py

在我的database.py文件中,我将配置导入为import ...config。 还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您应该查看Flasky中如何管理配置。基本上,config.py驻留在应用程序根目录中,就像在项目中一样。

然后在您的app文件夹中,您将应用程序作为一个包启动,即添加__init__.py文件。

__init__.py包含config的导入声明:

from config import config

然后,您可以使用Flask blueprints来启动对配置的调用。另请参阅Flask中如何管理larger applications

总而言之,现有资源需要进行四次更改:

  1. 通过创建__init__.py文件使您的应用成为一个包。
  2. 将导入语句添加到根__init__.py目录中的app
  3. 在您的模块目录(在本例中为database/)中创建一个__init__.py文件,以允许该模块用作较大烧瓶应用程序中的蓝图。 [注意,在这种情况下,模块是指应用程序的模块化部分; 到python模块;让我感到困惑。]
  4. 返回app/__init__.py导入蓝图,即
  5. 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即可获得配置。