我意识到这个问题以前被问过(What's the best practice using a settings file in Python?),但鉴于这个问题是7年前问的,我觉得再次讨论技术是如何发展的是有效的。
我有一个python项目,需要根据环境变量的值使用不同的配置。由于使用环境变量选择配置文件非常简单,我的问题如下:
当需要根据环境进行多个配置时,在软件行业中,在python中设置配置文件的最佳做法是什么格式?
我知道python自带了ConfigParser模块,但我想知道是否使用YAML或JSON等格式更好,因为它们易于跨语言使用,因此受欢迎程度提高。当您有多个配置时,哪种格式更容易维护?
6条答案
按热度按时间7d7tgy0s1#
如果你真的想使用基于环境的YAML配置,你可以这样做:
config.py
mrphzbgm2#
我认为Python Django设置模块的标准配置是一个很好的例子,因为Python Django Web框架在商业项目中非常受欢迎,因此代表了软件行业。
它并没有使用JSON或YAML配置文件-它只是使用了一个名为www.example.com的Python模块settings.py,该模块可以导入到任何需要访问设置的其他模块中。基于环境变量的设置也在那里定义。这里是Github上Django的示例settings.py文件的链接:
https://github.com/deis/example-python-django/blob/master/helloworld/settings.py
e1xvtsh33#
这对于聚会来说真的很晚,但这是我使用的,我很高兴它(如果你对纯Python解决方案持开放态度)。我喜欢它,因为我的配置可以根据使用环境变量部署的位置自动设置。我没有使用这个很长时间,所以如果有人看到问题,我会洗耳恭听。
结构:
config.py
init.py
如果我的环境变量在我的应用存在的每个地方都被设置,我可以根据需要将其带入我的模块:
xesrikrc4#
这实际上取决于您的需求,而不是格式的流行程度。例如,如果您只需要简单的键-值对,一个INI文件就足够了。(例如数组或字典),我会选择JSON或YAML。JSON只是存储数据(它更适合系统之间的自动数据流),而YAML更适合人类生成的(或维护,或读取)文件,因为它有注解,你可以在文件的其他地方引用值...而且最重要的是,如果你想要健壮性,灵活性,并检查文件结构是否正确(但不太关心数据的手动版本),我会选择XML。
nvbavucw5#
我建议尝试使用trapdoor进行交钥匙配置(免责声明:我是《活板门》的作者)。
of1yzvn46#
我还想利用这样一个事实,即你不必编译Python源代码,也不必使用普通的Python文件进行配置。但在真实的世界中,你可能有多个环境,每个环境都需要不同的配置,你可能还想从环境变量或不在源代码控制中的文件中读取一些(大多数是敏感的)信息(以防止错误地提交这些信息)。
这就是我写这个库的原因:https://github.com/davidohana/kofiko,它允许您使用纯Python文件进行配置,但也能够覆盖.ini或env-vars中的配置设置,并且还支持针对不同环境的自定义。
关于它的博客文章:https://medium.com/swlh/code-first-configuration-approach-for-python-f975469433b9