使用Python作为Python程序的配置语言

Par*_*and 5 python

我想动态地将各种设置和配置导入到我的python程序中 - 您通常使用.ini文件或类似的东西.

我开始使用JSON获取配置文件语法,然后转移到YAML,但我真的想使用Python.它将最小化格式数量并允许我在配置文件中使用代码,这很方便.

我修改了一个__import__基于系统,允许使用如下代码:

account_config = __import__(settings.CONFIG_DIR + '.account_name', fromlist=[settings.CONFIG_DIR])
Run Code Online (Sandbox Code Playgroud)

它基本上有效,但我遇到了各种各样的深奥问题 - 例如.如果我尝试导入"test",它会选择一些python路径中的内部python库而不是我的测试.

所以我想知道:使用python作为python程序的配置语言是可行的还是我要求麻烦?有可以偷走的例子吗?

S.L*_*ott 6

一个简单的方法就是这样.

您的配置文件分配了一堆全局变量.

CONFIG = "some string"
ANOTHER = [ "some", "list" ]
MORE = "another value"
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用导入所有这些设置

settings = {}
execfile('the_config.py', settings )
settings['CONFIG'] == "some string"
Run Code Online (Sandbox Code Playgroud)

现在,您的设置字典已设置所有全局变量.


Fre*_*Foo 5

使用python作为python程序的配置语言是可行的还是我要求麻烦?

要看; 意识到你在OS界面上获得了图灵完整的配置文件格式.这可能会引发安全问题,因此不要使用来自不受信任来源的配置文件.

OTOH,这个设置非常方便.

有可以偷走的例子吗?

Django.