【问题标题】:Python, best practices importing config filePython,导入配置文件的最佳实践
【发布时间】:2016-06-05 21:00:39
【问题描述】:

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

结构:

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

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

【问题讨论】:

    标签: python import flask


    【解决方案1】:

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

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

    __init__.py 包含对您的config 的导入语句:

    from config import config

    然后您可以使用Flask blueprints 来发起对您的配置的调用。还可以看看 larger applications 在 Flask 中是如何管理的。

    总而言之,它需要对您现有的源进行大约四次更改:

    1. 通过创建__init__.py 文件将您的应用程序打包。
    2. 将 import 语句添加到您的根 app 目录中的 __init__.py
    3. 在您的模块目录(在本例中为database/)中创建一个__init__.py 文件,以允许将该模块用作您更大的烧瓶应用程序中的蓝图。 [注意在这种情况下,模块是指应用程序的模块化部分; 到 python 模块;我知道我很困惑。]
    4. 回到app/__init__.py导入蓝图,即,
    从 .database 导入数据库作为 db_blueprint app.register_blueprint(db_blueprint)

    这是一项繁重的工作,但如果您有兴趣编写更复杂的应用程序并(当然)组织您的项目,那真的很棒。

    【讨论】:

      【解决方案2】:

      一般来说,在这种情况下,我会推荐模块级导入,所以类似于from application import config 由于您的 config.py 位于一个裸目录中,这当然是不可能的...除非您将 config.py 移动到应用程序中的某个位置。

      另一种解决方案可能是创建一个管理您的配置的类/应用程序,以便您始终使用它。

      话虽如此,我确信我理解对这个配置文件的需求。 Flask 会自动为您处理配置,对吗?只需导入您的应用并使用app.config 即可获取您的配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-21
        • 1970-01-01
        • 2012-03-09
        • 2017-09-06
        • 1970-01-01
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        相关资源
        最近更新 更多