【发布时间】:2017-04-23 06:37:44
【问题描述】:
我正在查看几个 python 项目。几乎每个好的 python 项目通常都有一个 app.conf 或 app.ini 文件用于他们的配置管理。之后,他们使用类似configparser.py 的模块从app.conf 文件中提取配置信息。最后,他们不得不以某种方式使用 .py 模块中的值。
我们来看一个例子
app.conf
[BREED]
beagle=dog
ragdoll=cat
deilenaar=rabbit
cockatoo=parrot
app.py
>#!/usr/bin/env python
#-*- coding: utf-8 -*-
import configparser
config = configparser.ConfigParser()
config.read('app.conf')
print(config['BREED']['cockatoo']) # prints parrot
那么为什么不使用字典并使用该字典来代替以下内容。
#!usr/bin/env python
# -*- coding: utf-8 -*-
config = {'BREED': {'beagle': 'dog',
'ragdoll': 'cat',
'deilenaar': 'rabbit',
'cockatoo': 'parrot'}}
print(config['BREED']['cockatoo']) # prints parrot
如果我们需要全局使用config,那么我们将把变量放在包根目录下的__init__.py 中。这样我们就不必再读取 app.conf 文件了。
我相信使用 app.conf 文件是有充分理由的。那是什么原因呢?
【问题讨论】:
-
在 Python 上下文之外重用配置文件来启动;可执行代码与用户可配置配置的解耦使得最终用户可以在不修改源代码的情况下进行操作,还可以重新定位这些配置文件,因为程序可以从多个位置读取。
-
我已经提到,如果我们的应用程序需要使用来自多个位置的配置信息,那么我们会将配置信息放在单独的
.py文件中,关于最终用户的事情:为什么最终用户需要更改源代码或配置文件? -
注意:Django 确实使用 Python 配置文件,但由于上述原因,这并不是一个好的决定。
标签: python configuration config configuration-files