在Python中各种项目之间共享配置参数\ settings \ constants的简洁方法是什么?
使用数据库似乎有点矫枉过正。使用文件提出了哪个项目应该在其源代码管理中托管文件的问题......
我愿意接受建议:)
更新
为了澄清 - 假设各种项目在不同系统上的部署方式不同。在某些情况下,在不同的目录中,在其他情况下,有些项目在那里,有些则没有。
答案 0 :(得分:5)
我发现在许多情况下,使用配置文件确实值得(轻微)麻烦。内置的ConfigParser
模块非常方便,特别是它很容易解析多个文件并让模块将它们合并在一起,文件中的值会在以后解析后覆盖先前解析的文件中的值。这样可以轻松使用全局文件(例如/etc/yoursoftware/main.ini)和每用户文件(〜/ .yoursoftware / main.ini)。
然后,每个项目都会打开配置文件并从中读取值。
这是一个小代码示例:
basefile.ini:
[sect1]
value1=1
value2=2
overridingfile.ini:
[sect1]
value1=3
configread.py:
#!/usr/bin/env python
from ConfigParser import ConfigParser
config = ConfigParser()
config.read(["basefile.ini", "overridingfile.ini"])
print config.get("sect1", "value1")
print config.get("sect1", "value2")
运行它会打印出来:
3
2
答案 1 :(得分:3)
创建一个Python包并将其导入各种项目......
答案 2 :(得分:3)
为什么不只有一个名为constants.py的文件,只有CONSTANT = value
答案 3 :(得分:2)
为什么数据库过度杀伤?您描述的是在位于不同物理系统上的不同项目之间共享数据,这些项目具有到每个项目目录的不同路径。哦,有时项目不在那里。我无法想象一种更好的通信方式。它只需要是一个表,如果它提供跨平台,计算机甚至网络所需的一致访问,那就几乎不会过度。