python中的集中式配置
目前,我的配置选项(常量/变量)有点零碎,大部分都在config.py中,但有些在myfile.py的顶部python中的集中式配置,python,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 在myfile.py中,您可以 im
/utilities/myfile.py
/config.py
您可以在myfile.py中找到的示例如下:
TEMP_DIR = '/tmp'
如果我想将这个定义从myfile.py移到config.py中,但仍然在myfile.py中使用它,我该怎么做
我是python新手,但我假设它与myfile.py顶部的内容类似
from config
在
myfile.py
中,您可以
import config
并使用
config.TEMP_DIR
如果包含
config.py
的目录在您的中。变体1
from config import *
这将处理myfile.py中的整个名称空间
from config
变体2
from config import foo, bar, baz
必须提及myfile.py中使用的任何值
变体3
import config
...
x = config.foo
每个值都需要引用配置
您的选择,但我更喜欢变体3。要在myfile.py中查看config.py,您必须编辑PYTHONPATH或使用相对导入:
from ... import config
另一种方法是使用
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
相关:4种可能的方法。。。还记得python的禅宗吗?“应该有一种——最好只有一种——显而易见的方法来做到这一点。”;)你是对的。我们都应该使用:-)我必须承认我是挪威人。我觉得这一点很重要,因为许多python用户没有向新的python用户提到这一点:如果使用代码
import config
,那么在调用模块中的对象时需要添加模块,类似于这样:x=config.foo
如果使用config import*中的,则不需要将模块放在对象前面:x=foo
。我忘记了这是为什么,但如果您在使用python时记住这一点,将节省大量时间和混乱。