在python中集中配置

时间:2012-11-20 13:00:15

标签: python

目前我的配置选项(常量/变量)有点碎片,我的大部分都在config.py中,但有些在顶部的myfile.py中。

/utilities/myfile.py
/config.py

您可以在myfile.py中找到的示例是:

TEMP_DIR = '/tmp'

如果我想将此定义从myfile.py移到我的config.py中,但仍然在myfile.py中使用它,我该怎么办呢?

我是python的新手,但我认为它是myfile.py

顶部的内容。
from config

3 个答案:

答案 0 :(得分:0)

myfile.py你可以放

import config

并使用

访问TEMP_DIR
config.TEMP_DIR

如果包含config.py的目录位于PYTHONPATH

答案 1 :(得分:0)

变体1

from config import *

这会调用myfile.py中的整个命名空间

变体2

from config import foo, bar, baz

必须提到myfile.py中使用的永久值。

变体3

import config
...
x = config.foo

每个值都需要参考config。

您的选择,但我更喜欢变体3.要在myfile.py中查看 config.py,您必须编辑 PYTHONPATH 或使用相对导入:< / p>

from ... import config

答案 2 :(得分:0)

另一种方法是使用execfile。这样可以更轻松地使用不同的配置文件(例如,指定要在命令行上使用的配置文件)。

示例:

# myconfig.py
TEMP_DIR = "/tmp/"

# myotherconfig.py
TEMP_DIR = "/tmp/foo"

# program.py (the main program)
import sys
config = {}
execfile(sys.argv[1], config)
print config["TEMP_DIR"]

调用程序:

$ python program.py myconfig.py
/tmp/
$ python program.py myotherconfig.py
/tmp/foo

相关:Python configuration file: Any file format recommendation? INI format still appropriate? Seems quite old school