Я использую ConfigParser для конфигурирования моего приложения, и теперь я хочу сделать это легко распространяемым, и в то же время сохранить конфигурируемость.
Я думаю, что мне нужны каталог с шаблонами конфигурационного файла и некоторый способ генерировать конфигурацию для фактического использования от них. Тогда мне нужно место для хранения его, который будет работать в virtualenv, пользовательский корневой каталог и т.д. Я хочу, чтобы это было как близко к тому, как нормальные пакеты Unix работают, т.е. имеют конфигурацию в и т.д., но с переопределениями в корневом каталоге. Существует ли готовое решение для этого, и в противном случае как что я должен вставить свой setup.py и т.д., чтобы заставить его работать, я хочу?
вы можете использовать опцию data_files
в distutils
для установки файлов в любом месте.
data_files
определяет последовательность пар (каталог, файлы)
следующим образом:
setup(...,
data_files=[('/etc', ['cfg/config1.ini', 'cfg/config2.ini']),
('/etc/init.d', ['bin/initscript1'])],
....
)
При чтении файла конфигурации в вашем приложении вы можете объединить / home
, если он существует, используя метод .read ()
для ConfigParser
объектов :
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
в домашнем каталоге пользователя, если он существует.