我正在使用 ConfigParser 来配置我的应用程序,现在我想让它易于分发,同时保持可配置性。
我想我需要一个包含配置文件模板的目录,以及一些生成配置以从中实际使用的方法。然后我需要一个地方来存储它,它将在 virtualenv、用户主目录等中工作。我希望它尽可能接近普通 Unix 包的工作方式,即在 etc 中有配置,但在主目录中有覆盖。是否有针对此问题的现成解决方案?如果没有,我应该在 setup.py 等中放入什么以使其按我想要的方式工作?
最佳答案
你可以使用data_files
distutils
的选项可以在任何你想要的地方安装文件。
data_files
按以下方式指定 (directory, files)
对的序列:
setup(...,
data_files=[('/etc', ['cfg/config1.ini', 'cfg/config2.ini']),
('/etc/init.d', ['bin/initscript1'])],
....
)
当读取你的应用程序的配置文件时,你可以合并一个/home
版本,如果它存在的话,使用.read()
method of ConfigParser
objects :
files_read = cfgparserobj.read(['/etc/config1.ini',
os.path.expanduser('~/.config1.ini')])
for fname in files_read:
print "Reading config from", fname
这将读取 /etc/config1.ini
,然后用来自用户主目录中的 .config1.ini
的内容覆盖定义,如果它存在的话。
关于python - 使用配置文件打包 Python 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026876/