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

3
我是一个Flask Web应用程序的创建者,我有一个存储配置信息的文件。然而,一些内部模块需要引用位于两个目录上层的config.py文件。我正在使用相对导入,但我认为这是一种不好的做法,也不够灵活。
结构:
workspace:
    app:
      database:
         __init__.py
         database.py
    config.py

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

2个回答

1
你应该查看 Flasky 中配置是如何管理的。基本上,config.py 位于应用程序根目录中,就像在您的项目中一样。
然后,在您的应用程序文件夹中,您将应用程序作为一个包进行初始化,即通过添加 __init__.py 文件。 __init__.py 包含对您的 config 的导入语句: from config import config 然后,您可以使用 Flask 蓝图 来调用您的配置。还要看看 Flask 如何管理 更大的应用程序
总的来说,这将需要对您现有的源进行大约四个更改。
  1. 通过创建__init__.py文件,将您的应用程序打包成一个包。
  2. 在根目录下的app中的__init__.py中添加导入语句。
  3. 在您的模块目录(在本例中为database/)中创建一个__init__.py文件,以允许该模块在您更大的flask应用程序中用作蓝图。[注意,在这种情况下,模块指的是应用程序的模块化部分;不是Python模块;有点令人困惑。]
  4. 回到app/__init__.py中导入蓝图,即
from .database import database as db_blueprint
app.register_blueprint(db_blueprint)

虽然需要一些工作量,但如果您有兴趣编写更复杂的应用程序并(当然)组织项目,这真的很棒。


0

一般情况下,我建议在这种情况下使用模块级别的导入,类似于 from application import config。当然,由于你的 config.py 在一个裸目录中,这是不可能的... 除非你把 config.py 移动到应用程序内的某个位置。

另一种解决方案可能是创建一个管理配置的类或应用程序,这样你就可以随时使用它。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接